Как мы можем реплицировать регистрацию зависимостей из StructureMap в Microsoft DI - PullRequest
0 голосов
/ 07 июня 2018

С помощью Structuremap мы можем зарегистрировать интерфейсы следующим образом:

Scan(x =>
            {
                x.AssemblyContainingType<Startup>();
                x.Assembly("Api");
                x.LookForRegistries();
                x.AddAllTypesOf<Profile>();
                x.WithDefaultConventions();
            });

Если у меня есть Интерфейс, и несколько конкретных реализаций используют этот интерфейс, IService, ServiceA, ServiceB, ServiceC, как я могу это сделать с помощью Microsoft DI,или мне нужно записать addtransient 3 раза?

То же самое для шаблона стратегии:

public class ServiceStrategy : IServiceStrategy
{
    private readonly List<IService> _services;

    public ServiceStrategy(List<IService> services)
    {
        this._services= services;
    }

    public string GetProcedure(Enum enum, EnumTwo enum2)
    {
        return this._managers.FirstOrDefault(x => x.Type == enum)
            ?.GetProcedure(enum2);
    }
}

Как мне зарегистрировать стратегию здесь?

1 Ответ

0 голосов
/ 07 июня 2018

Microsoft.Extensions.DependencyInjection не имеет каких-либо возможностей автоматической регистрации, поэтому у вас есть 3 варианта:

  • Зарегистрировать каждый компонент явно, выполнив один вызов AddTransient для компонента
  • Пишите авторегистрацию самостоятельно, размышляя над сборками, отфильтровывая нужные типы и регистрируя их.В зависимости от ваших требований это может варьироваться по сложности.
  • Переключиться на более зрелый, функциональный правильный DI-контейнер.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...