C# 使用打开的泛型接口注册封闭的泛型类实现
我刚刚意识到,您不能像这样注册依赖项注入:C# 使用打开的泛型接口注册封闭的泛型类实现,c#,dependency-injection,asp.net-core-3.1,scrutor,netcore.autoregisterdi,C#,Dependency Injection,Asp.net Core 3.1,Scrutor,Netcore.autoregisterdi,我刚刚意识到,您不能像这样注册依赖项注入: services.AddScoped(typeof(IConcreteRepository<,>), typeof(DepartmentRepository)); 您应该将存储库注册为关闭的通用接口: services.AddScoped<IConcreteRepository<Department, int>, DepartmentRepository>(); services.addScope(); 但是部门
services.AddScoped(typeof(IConcreteRepository<,>), typeof(DepartmentRepository));
您应该将存储库注册为关闭的通用接口:
services.AddScoped<IConcreteRepository<Department, int>, DepartmentRepository>();
services.addScope();
但是部门存储库
不是IConcreteRepository
。您实际想要实现的目标是什么?您可以将部门存储库注册为IConcreteRepository
,这很有意义。我认为把它注册为IConcreteRepository
,但对解释是没有意义的。试试services.AddScoped()
,它在我的测试项目中起作用。@GuruStron你是个天才。非常感谢你。你应该写一个答案,将其标记为解决方案!这很好用。好吧,它在我装饰过的存储库上不起作用,但这是另一个主题。如果我不能让他们工作,我将发布另一个问题。再次感谢!我很乐意帮忙!
An error occurred while accessing the Microsoft.Extensions.Hosting services.
Error: Open generic service type 'CompanyName.ApplicationName.DAL.Repository.Contracts.IConcreteRepository`2[TEntity,TId]' requires registering an open generic implementation type. (Parameter 'descriptors').
services.AddScoped<IConcreteRepository<Department, int>, DepartmentRepository>();