zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    第十次作业
    第九次作业总结
    第九次作业
    第八次作业总结
    第七次作业总结
    第六次总结
    第十二次作业总结
    第十一次作业总结
    第十次作业总结
    第九次作业总结
  • 原文地址:https://www.cnblogs.com/yxzs/p/15517138.html
Copyright © 2011-2022 走看看