個人主機做網站一鍵關鍵詞優(yōu)化
Asp.net Core 中一鍵注入接口
- 前言
- 準備
- 開始
- 使用
前言
在之前開發(fā)Asp.Net Core程序時遇到接口需要一個一個的注入到Services中,當有非常多的接口需要注入時會顯得代碼成為了一座山,這里記錄一下如何通過接口的命名一鍵自動注入.
準備
IDE: Visual studio 2022
.Net版本:.Net 8
開始
首先是接口的命名需要規(guī)范,列如接口命名為TestDao
,實現(xiàn)類命名為TestDaoImpl
,這里就以Dao
于DaoImpl
來做示范.
新建一個類,命名為ServiceCollectionExtensions
,內容如下:
public static IServiceCollection AddDaosWithConvention(this IServiceCollection services, Assembly assembly){var interfaceSuffix = "Dao"; // 接口命名結尾var implementationSuffix = "DaoImpl";// 實現(xiàn)類命名結尾// 通過反射的機制來尋找所有的接口命名符合interfaceSuffix 結尾的var interfaceTypes = assembly.GetTypes().Where(t => t.IsInterface && t.Name.EndsWith(interfaceSuffix)).ToArray();// 通過反射的機制來尋找所有的實現(xiàn)類命名符合interfaceSuffix 結尾的var types = assembly.GetTypes().Where(t => t.IsClass && !t.IsAbstract && t.Name.EndsWith(implementationSuffix)).ToList();// 使用AddScoped注入所有符合的接口與實現(xiàn)類foreach (var interfaceType in interfaceTypes){foreach (var type in types){var interfaceName = type.GetInterfaces().FirstOrDefault(i => i.Name == interfaceType.Name)?.Name;if (interfaceName != null){services.AddScoped(interfaceType, type);}}}return services;}
使用
在Program.cs
文件中添加:
builder.Services.AddDaosWithConvention(Assembly.GetExecutingAssembly());
當上述配置完成后,在創(chuàng)建完接口與實現(xiàn)類后可以直接引用,不需要再去注冊.