Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用打开的泛型接口注册封闭的泛型类实现_C#_Dependency Injection_Asp.net Core 3.1_Scrutor_Netcore.autoregisterdi - Fatal编程技术网

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>();