心酸

程序集依赖注入笔记

电脑版发表于:2020/7/30 14:04

 public static class IServiceCollectionExtension

    {

        /// <summary>

        /// 程序集依赖注入

        /// </summary>

        /// <param name="services"></param>

        /// <param name="assemblyName"></param>

        /// <param name="serviceLifetime"></param>

        public static void GetAssembly(this IServiceCollection services, string assemblyName, ServiceLifetime serviceLifetime = ServiceLifetime.Singleton)

        {

            if (!String.IsNullOrEmpty(assemblyName))

            {

                Assembly assembly = Assembly.Load(assemblyName);

                List<Type> ts = assembly.GetTypes().ToList();

                var result = new Dictionary<Type, Type[]>();

                if (ts != null)

                {

                    var tsAssemblyList = ts.Where(o => o.IsClass && !o.IsAbstract && !o.IsGenericType && o.Name.Contains("Service"));

                    foreach (var item in tsAssemblyList)

                    {

                        var interfaceType = item.GetInterfaces().First();

                        switch (serviceLifetime)

                        {

                            case ServiceLifetime.Scoped:

                                services.AddScoped(interfaceType, item);

                                break;

                            case ServiceLifetime.Singleton:

                                services.AddSingleton(interfaceType, item);

                                break;

                            case ServiceLifetime.Transient:

                                services.AddTransient(interfaceType, item);

                                break;

                        }

                    }

                }

            }

        }

    }


关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢