前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ActivatorUtilities.CreateInstance用于各种激活器服务的帮助程序代码。

ActivatorUtilities.CreateInstance用于各种激活器服务的帮助程序代码。

作者头像
跟着阿笨一起玩NET
发布2022-05-10 13:57:12
4220
发布2022-05-10 13:57:12
举报

ActivatorUtilities

官方链接

https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.extensions.dependencyinjection.activatorutilities?view=dotnet-plat-ext-3.0

作用

当某些服务不方便依赖注入时使用 比如: public Some(serviceA a,ServiceB b,int c) 如上诉方法,c为int时,并不好注入。此时就可以使用ActivatorUtilities 辅助实例化。 ActivatorUtilities 需要一个服务提供者,比如已经注入了serviceA,合serviceB,则在CreateInstance时,只需要补充参数c的值即可。 即:ActivatorUtilities.CreateInstance(serviceProvider,1);

代码示例

如果参数ServiceProvider无法提供,将会从参数列表中依次获取。

    public class Program
    {
        public static void Main()
        {
            ServiceCollection serviceDescriptors = new();
            var pr = serviceDescriptors.AddScoped<ServiceA>().BuildServiceProvider();
            var serviceB = ActivatorUtilities.CreateInstance<ServiceB>(pr, TypeEn.A);
            serviceB.ShowType();

            serviceB = ActivatorUtilities.CreateInstance<ServiceB>(pr, TypeEn.B);
            serviceB.ShowType();
        }


        public enum TypeEn
        {
            A,
            B
        }

        public class ServiceA
        {
        }

        public class ServiceB
        {
            public TypeEn Type { get; set; }
            public ServiceA A { get; set; }
            public ServiceB(ServiceA a, TypeEn type)
            {
                this.A = a;
                this.Type = type;
            }

            public void ShowType()
            {
                System.Console.WriteLine(Type);
            }
        }
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ActivatorUtilities
    • 官方链接
      • 作用
        • 代码示例
          • 如果参数ServiceProvider无法提供,将会从参数列表中依次获取。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档