170 похожих чатов

Ребят, нужен совет по архитектуре webapi приложения. У меня есть

куча сервисных классов с бизнес-логикой, в каждый из этих классов в конструкторе заинжекчен самописный ServiceFabric - фабрика сервисных классов, который позволяет получать нужные им зависимости. По сути ServiceFabric это обёртка над стандартным IServiceScope, только с логикой переключения между двумя БД (RW и RO): он не просто инстацирует сервисный класс, а ещё указывает ему, с какой БД тому работать. Это делается, грубо говоря, через булевскую переменную внутри самого ServiceFabric, который передаётся в инстанцируемый класс. Более того, важный момент: эта булевская переменная должна прокидываться дальше по цепочке вызовов.
Т.е. Service1 через свой ServiceFabric инстанцирует Service2, указывав ему работать с RW базой. Service2, инстанцируя нужные ему Service3 и Service4 автоматески передаёт переменную им, так что они тоже невольно работают с RW. Надеюсь понятно объяснил.
Так вот, пока я пользовался Autofac, это было реализовано через TypedParameter - я на этапе резолва создавал экземпляр ServiceFabric и инжектил его. Но сейчас отказываюсь от Autofac, хочу остаться только со стандартным DI от Microsoft, но в нём, как оказалось, нету аналога передачи типизированных параметров.
Гуглю решения - на стэковерфлоу советуют использовать паттерт Options, т.к. по сути во свои сервисные классы добавить отдельный метод инициализации нужным мне экземпляром ServiceFabric. Но вариант мне не нравится по ряду причин. Можете посоветовать другие?

2 ответов

10 просмотров

хорошую вещь ServiceFabric не назовут! https://github.com/microsoft/service-fabric

Dmitry-B. Автор вопроса
Ayrat Hudaygulov
хорошую вещь ServiceFabric не назовут! https://git...

да, я знаю что такое название уже используется, но в моём проекте это именно самописный класс

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта