我们如何在 DI 中从结构图复制依赖注册Microsoft



使用结构图,我们可以注册如下接口:

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);
}
}

如何在此处注册策略?

Microsoft.Extensions.DependencyInjection缺少任何自动注册功能,因此您有3个选项:

  • 显式注册每个组件,方法是对每个组件进行一次AddTransient调用
  • 通过反映程序集、筛选出正确的类型并注册它们来自己编写自动注册。根据您的要求,复杂性可能会有所不同。
  • 切换到更成熟、功能更强大的 DI 容器。

最新更新