Сохранение инъекции зависимостей .NET в порядок - PullRequest
0 голосов
/ 23 ноября 2018

Недавно я начал работать над новым проектом с использованием .NET Core 2.1 и решил использовать принципы SOLID и создать хорошую структуру проекта.

Это проект веб-API.Все работает нормально, я использую много инъекций зависимостей, большинство из них легко проверить.

И это та часть, где я должен зарегистрировать все свои услуги.У меня буквально сотни строк, выглядящих так:

services.AddSingleton<...>();

или

services.AddScoped<...>();

У меня есть одна строка для каждого сервиса, и для небольшого проекта это было бы хорошо.Однако, когда у меня есть сотни из них, это становится большим беспорядком.По сути, весь проект находится в очень хорошем порядке, и появляется Startup.cs, полный сервисов. Операторы AddX.

Я думал о создании статических классов с методами, которые регистрируют сервисы, но это выглядит не очень хорошо.

Мне нужно будет добавить больше сервисов в будущем, и я не могу просто продолжать создавать статические классы или заполнять старые, потому что у меня снова будет тот же беспорядок, и мне будет труднее запомнитьгде я регистрирую данную услугу.

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Каждая логическая группа сервисов (в сборе) может экспортировать свой собственный метод RegisterServices.В любом случае эта сборка несет ответственность за выбор срока службы и объема работ.

Для косметики используйте метод расширения AddMyStuff() в пространстве имен Microsoft.Extensions.DependencyInjection.

См. AddMvc() для примера.Найдите его ( F12 ) и обратите внимание на разницу между сборкой и пространством имен, в котором она находится.

0 голосов
/ 23 ноября 2018

Если у вас действительно их сотни, вы можете заменить контейнер по умолчанию, например, на Autofac.Этот тип фреймворков поддерживает модули или разновидности «подконтейнеров».

Модуль - это небольшой класс, который можно использовать для объединения набора связанных компонентов за «фасадом» для упрощения настройки и развертывания.

Заменить DI Autofac модули

...