asp.net core项目中采用反射的方式进行依赖注入

现在编程方式应该是约定大于配置,即使在开发阶段,和组员沟通好,以某一种方式去编程,不要随意去编写,按约定好的编程方式去编程会有很大的便利,不需要进行太多的判断和配置。比如依赖注入,之前都是创建一个接口,就要去手动注入一次,当然你也有别的方式去处理,不用每次创建都去手动注入,今天我要记录的是和组员约定好,以什么字符串结尾的,就自动进行依赖注入。详见代码:

/// <summary>
    /// 采用反射方式进行依赖注入
    /// </summary>
    public static class DependencyInjectionExtension
    {
        public static IServiceCollection AddService(this IServiceCollection services)
        {
            var assembly = Assembly.Load("wcfu.service");
            return Register(services, assembly, "Service");
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="services"></param>
        /// <param name="assembly"></param>
        /// <param name="endStr"></param>
        /// <returns></returns>
        public static IServiceCollection Register(IServiceCollection services, Assembly assembly, string endStr)
        {
            var types = assembly.GetTypes().Where(a => a.Name.EndsWith(endStr) && a.IsClass && !a.IsAbstract);
            foreach (var t in types)
            {
                var interfaceTypes = t.GetInterfaces();
                foreach (var interfaceType in interfaceTypes)
                {
                    services.TryAddScoped(interfaceType, t);
                }
            }

            return services;
        }
    }

在Startup.cs文件中去注入即可:

services.AddService();

 

posted @ 2021-11-06 15:37  月下之神  阅读(376)  评论(0编辑  收藏  举报