Можно ли использовать внешнюю конфигурацию с инъекцией зависимостей по умолчанию в ASP.NET Core? - PullRequest
0 голосов
/ 31 мая 2018

В прошлом я использовал внешние файлы конфигурации с другими структурами DI, такими как Unity, чтобы определить, какой конкретный тип следует предоставлять при вводе интерфейса.

Это был отличный способ полностьюотделить сборку, содержащую конкретные реализации, от выпущенной копии приложения, которое их использует.Позвольте мне загрузить альтернативную сборку, просто отредактировав конфиг.

У меня сложилось впечатление, что это не особенность Microsoft.Extensions.DependencyInjection, особенно при просмотре кода . * 1007.*

Полагаю, мне хотелось бы получить второе мнение, чтобы подтвердить это, прежде чем я начну использовать другого провайдера DI в своем проекте ASP.NET Core.

1 Ответ

0 голосов
/ 31 мая 2018

MS DI должен быть простым, с которым легко начать работу и который можно легко использовать в качестве основы для других фреймворков IoC / DI для подключения к нему.

У него нет автоматической регистрации, сканирования сборки и поддержки декоратора / перехвата.Если вам нужны такие функции, вы должны использовать сторонний контейнер, такой как Unity, который вы уже назвали.

У Unity уже есть точка расширения для Microsoft.Extensions.DependencyInjection, которую можно найти здесь, на GitHub или на NuGet .

Как описано в GitHub, все, что вам нужно сделать, это запустить

Install-Package Unity.Microsoft.DependencyInjection

Чтобы установить пакет и добавить его в свой код

  • В WebHostBuilder добавьте метод UseUnityServiceProvider (...)

    public static IWebHost BuildWebHost(string[] args) =>
      WebHost.CreateDefaultBuilder(args)
         .UseUnityServiceProvider()    <------ Add this line
         .UseStartup<Startup>()
         .Build();
    
  • Добавьте метод в свой класс запуска

    public void ConfigureContainer(IUnityContainer container)
    {
        // Could be used to register more types
        container.RegisterType<IMyService, MyService>();
    }
    
...