网站建设上传文件,爱企业在线查询,wordpress定时网站地图,怎么用ip访问vps网站Asp.net Core 中一键注入接口 前言准备开始使用 前言
在之前开发Asp.Net Core程序时遇到接口需要一个一个的注入到Services中,当有非常多的接口需要注入时会显得代码成为了一座山,这里记录一下如何通过接口的命名一键自动注入.
准备
IDE: Visual studio 2022 .Net版本:.Net … Asp.net Core 中一键注入接口 前言准备开始使用 前言
在之前开发Asp.Net Core程序时遇到接口需要一个一个的注入到Services中,当有非常多的接口需要注入时会显得代码成为了一座山,这里记录一下如何通过接口的命名一键自动注入.
准备
IDE: Visual studio 2022 .Net版本:.Net 8
开始
首先是接口的命名需要规范,列如接口命名为TestDao,实现类命名为TestDaoImpl,这里就以Dao于DaoImpl来做示范. 新建一个类,命名为ServiceCollectionExtensions,内容如下: public static IServiceCollection AddDaosWithConvention(this IServiceCollection services, Assembly assembly){var interfaceSuffix Dao; // 接口命名结尾var implementationSuffix DaoImpl;// 实现类命名结尾// 通过反射的机制来寻找所有的接口命名符合interfaceSuffix 结尾的var interfaceTypes assembly.GetTypes().Where(t t.IsInterface t.Name.EndsWith(interfaceSuffix)).ToArray();// 通过反射的机制来寻找所有的实现类命名符合interfaceSuffix 结尾的var types assembly.GetTypes().Where(t t.IsClass !t.IsAbstract t.Name.EndsWith(implementationSuffix)).ToList();// 使用AddScoped注入所有符合的接口与实现类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());当上述配置完成后,在创建完接口与实现类后可以直接引用,不需要再去注册.