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