码迷,mamicode.com
首页 > 其他好文 > 详细

服务激活工具 ActivatorUtilities

时间:2021-02-27 13:16:10      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:activator   激活   mic   ati   int   oid   tps   ram   enc   

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

服务激活工具 ActivatorUtilities

标签:activator   激活   mic   ati   int   oid   tps   ram   enc   

原文地址:https://www.cnblogs.com/yeqifeng2288/p/14445937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!