1. 程式人生 > 其它 >asp.net core專案中採用反射的方式進行依賴注入

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