我正在将我的.Net框架代码转换为.Net Core3.1。
在我的旧代码中,我使用了Unity来处理我的DI,现在我使用的是Microsoft的DI工具。
然而,我在模仿我如何注入特定的策略模式实现时遇到了困难,就像我在Unity中所做的那样:
container.RegisterType<IService, ConcreteServiceA>("MyString");
container.RegisterType<IStrategy, Strategy>(
new InjectionConstructor(
new ResolvedArrayParameter<IService>(
new ResolvedParameter<IService>("MyString")
)
));如何使用Microsoft进行等效操作?谢谢。
发布于 2020-02-01 02:07:22
根据您要做的事情,请注意以下几点
默认服务容器替换 内置服务容器旨在满足框架和大多数消费应用程序的需求。我们建议使用内置容器,除非需要内置容器不支持的特定特性,例如:
Func<T>对延迟初始化的支持参考默认服务容器替换
统一确实有一个可以插入Microsoft DI的扩展。
安装nuget软件包
Install-Package Unity.Microsoft.DependencyInjection并使用相关的扩展。
例如
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseUnityServiceProvider() //<---- Add this line
.ConfigureContainer<IUnityContainer>( container => {
container.RegisterType<IService, ConcreteServiceA>("MyString");
container.RegisterType<IStrategy, Strategy>(
new InjectionConstructor(
new ResolvedArrayParameter<IService>(
new ResolvedParameter<IService>("MyString")
)
));
})
//...https://stackoverflow.com/questions/60009751
复制相似问题