gpt4 book ai didi

c# - DependencyInjection 是否支持自动注册服务?

转载 作者:太空狗 更新时间:2023-10-29 21:49:20 25 4
gpt4 key购买 nike

ASP.Net Core 内置的依赖注入(inject)功能是否支持自动注册服务?我不想像这样手动注册它们:

services.Add(new ServiceDescriptor(typeof(IUserService), 
new UserService(new AtmDbContext())));

最佳答案

对于我的项目,以下内容帮助了我:

Startup.cs 方法 ConfigureServices 添加行:

services.AddHandlers("Project name");

及其实现:

public static IServiceCollection AddHandlers(this IServiceCollection services, string assemblyName)
{
var assemblyPath = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), assemblyName + ".dll");
var assembly = Assembly.Load(AssemblyLoadContext.GetAssemblyName(assemblyPath));

var classTypes = assembly.ExportedTypes.Select(t => IntrospectionExtensions.GetTypeInfo(t)).Where(t => t.IsClass && !t.IsAbstract);

foreach (var type in classTypes)
{
var interfaces = type.ImplementedInterfaces.Select(i => i.GetTypeInfo());

foreach (var handlerType in interfaces.Where(i => i.IsGenericType))
{
services.AddTransient(handlerType.AsType(), type.AsType());
}
}

return services;
}

关于c# - DependencyInjection 是否支持自动注册服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34197758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com