首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单元DI到Microsoft DI -条件解析

单元DI到Microsoft DI -条件解析
EN

Stack Overflow用户
提问于 2020-01-31 18:55:38
回答 1查看 165关注 0票数 2

我正在将我的.Net框架代码转换为.Net Core3.1。

在我的旧代码中,我使用了Unity来处理我的DI,现在我使用的是Microsoft的DI工具。

然而,我在模仿我如何注入特定的策略模式实现时遇到了困难,就像我在Unity中所做的那样:

代码语言:javascript
复制
 container.RegisterType<IService, ConcreteServiceA>("MyString");

 container.RegisterType<IStrategy, Strategy>(
       new InjectionConstructor(
            new ResolvedArrayParameter<IService>(
                new ResolvedParameter<IService>("MyString")
            )
       ));

如何使用Microsoft进行等效操作?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-01 02:07:22

根据您要做的事情,请注意以下几点

默认服务容器替换 内置服务容器旨在满足框架和大多数消费应用程序的需求。我们建议使用内置容器,除非需要内置容器不支持的特定特性,例如:

  • 性能注入
  • 基于名称的注入
  • 儿童容器
  • 自定义生命周期管理
  • Func<T>对延迟初始化的支持
  • 基于公约的登记

参考默认服务容器替换

统一确实有一个可以插入Microsoft DI的扩展

安装nuget软件包

代码语言:javascript
复制
Install-Package Unity.Microsoft.DependencyInjection

并使用相关的扩展。

例如

代码语言:javascript
复制
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")
                    )
               ));
        })
        //...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60009751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档