[英]IS this the right way to automate the user defined service import in Built in DI in asp.net-core
我创建了一个扩展方法,用于添加在DI中定义的特定名称空间下定义的所有服务。 它运作良好。
public static class ServiceCollectionExtensions
{
public static void AddScopedImplementations(this IServiceCollection services)
{
foreach (Type type in Assembly.GetEntryAssembly().GetTypes()
.Where(t => t.Namespace == "ServerAPI.Services")
.Where(t => !t.GetTypeInfo().IsDefined(typeof(CompilerGeneratedAttribute),true))
.Where(t => t.GetTypeInfo().IsClass))
{
services.AddScoped(type.GetTypeInfo().GetInterface("I" + type.Name), type);
}
}
}
我的问题是:这是在asp.net-core的内置DI中执行此操作的正确方法吗?
就像你说的那样。 但是,它将您锁定在“ ServerAPI.Services”命名空间中。 您还必须为每个类提供一个以“ I”开头的相同名称的接口,在大多数情况下,这是不必要的。 您还为每个依赖项提供了范围内的生存期,但是注册通常应该是暂时的,除非有理由不这样做。
换句话说,此实现将限制您使用框架的灵活性。 如果您对此表示满意,那可能很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.