|
Autofac. Как обеспечить, чтобы вложенные зависимости получат ту же конфигурацию ?
|
|||
---|---|---|---|
#18+
Подскажите как можно такое законфигурировать. Есть такие классы: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Структура сервисов, репозиториев и сеттингов идентична. Они все совершенно идентично, просто должны работать на разных базах данных. Нужно, чтобы при резолве каждого сервиса, в него инжектились свои настройки (ServiceSettings.Service1Settings и ServiceSettings.Service2Settings соответствующие) + репозитории инжектились с настройками из раздела того-же сервиса. Т.е. в Service1 должен попасть репозиторий, connectionString которого взят из ServiceSettings.Service1Settings Код: c# 1. 2.
Ну понятно, что в худшем варианте я могу все жестко законфигурировать через RegisterInstance, везде задав синглтоны. Но хочется, чтобы было чище, как-то типа того: Код: c# 1. 2. 3. 4. 5. 6.
Как это можно законфигурировать ? Возможно я переборщил с иерархией и от каких-то лишних классов, интерфейсов можно отказаться вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2019, 15:01 |
|
Autofac. Как обеспечить, чтобы вложенные зависимости получат ту же конфигурацию ?
|
|||
---|---|---|---|
#18+
Дополню. Я конечно могу сделать полностью отдельную иерахию вида: Код: c# 1. 2. 3. 4. 5. 6. 7.
Но это ужасная идея. Если потом появится третья база, то придется создавать новую иерархию ? Нет уж. Хотелось бы лишь, чтобы нужно было скопипастить конфигурационный код, и дальше иметь возможность резолвить сервис на новую базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2019, 15:18 |
|
Autofac. Как обеспечить, чтобы вложенные зависимости получат ту же конфигурацию ?
|
|||
---|---|---|---|
#18+
По хорошему, даже Service1 и Service2 не нужны ! Просто я не придумал как тогда можно будет резолвить их по отдельности. Можно конечно с Keyed поэкспериментировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2019, 15:20 |
|
Autofac. Как обеспечить, чтобы вложенные зависимости получат ту же конфигурацию ?
|
|||
---|---|---|---|
#18+
WaspNewCoreПо хорошему, даже Service1 и Service2 не нужны ! Просто я не придумал как тогда можно будет резолвить их по отдельности. Можно конечно с Keyed поэкспериментировать. Регистрировать как named и лепить простенькую фактори с резолвом по имени. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2019, 18:48 |
|
Autofac. Как обеспечить, чтобы вложенные зависимости получат ту же конфигурацию ?
|
|||
---|---|---|---|
#18+
Ну keyed и named суть одна и та же. Я написал такой вариант решения, его и делаю сейчас. Но не очень красиво выходить. Приходится фактически описывать конструирование всех объектов через лямбду, где резолвить нужные зависимости по заданному ключу. Т.е. чтобы в сервис обязательно попали его сетинги, и репозиторий с его же сетингами. Но как-то не красиво. Если добавится новый сервис-база данных, придется добавлять новую цепочку. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 11:38 |
|
Autofac. Как обеспечить, чтобы вложенные зависимости получат ту же конфигурацию ?
|
|||
---|---|---|---|
#18+
WaspNewCore, Есть мнние, что при EF/ОРМ репозитарий не нужен. Бред? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 11:41 |
|
Autofac. Как обеспечить, чтобы вложенные зависимости получат ту же конфигурацию ?
|
|||
---|---|---|---|
#18+
Petro123, Ну это все спорно. копья ломают уже не первый год. Поищите в интернете статьи типа "репозиторий и Unit of Work поверх EF". Суть сейчас не в этом. А в то, чтобы как-то удобно и просто законфигурировать несколько взаимосвязанных объектов . Не важно что там. Репозиторий или нет. В частности тут мне нужно, чтобы в сервис и репозиторий попали одни и те же сеттинги. И ничего лучше этого не придумал: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 12:07 |
|
Autofac. Как обеспечить, чтобы вложенные зависимости получат ту же конфигурацию ?
|
|||
---|---|---|---|
#18+
Тут проблема в том, что если входных параметров несколько, то их все нужно четко прописать, резолвя через ResolveKeyed. И так к каждому объекту в иерархии. Очень много кода выходит, по сравнению с простым, классическим вызовом RegisterType. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 12:09 |
|
|
start [/forum/topic.php?fid=20&fpage=22&tid=1399013]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 178ms |
0 / 0 |