C# 在asp.net核心DI中添加通用服务

C# 在asp.net核心DI中添加通用服务,c#,dependency-injection,asp.net-core,C#,Dependency Injection,Asp.net Core,在asp.net core DI中,具有以下功能: public interface IRepository<T> where T:class {} public class Repository<T> : IRepository<T> where T:class {} public interface IContextProvider<T1,T2> {} public class ContextProviderOne<T2> : I

在asp.net core DI中,具有以下功能:

public interface IRepository<T> where T:class {}
public class Repository<T> : IRepository<T> where T:class {}
public interface IContextProvider<T1,T2> {}
public class ContextProviderOne<T2> : IContextProvider<ContextClass1,T2> { }
public class ContextProviderTwo<T2> : IContextProvider<ContextClass2,T2> { }
公共接口i假设,其中T:class{}
公共类存储库:IRepository,其中T:class{}
我将执行以下操作来注册我的服务:

services.AddScoped(typeof(IRepository<>), typeof(Repository<>));
services.addScope(typeof(IRepository)、typeof(Repository));
但现在我的服务如下:

public interface IRepository<T> where T:class {}
public class Repository<T> : IRepository<T> where T:class {}
public interface IContextProvider<T1,T2> {}
public class ContextProviderOne<T2> : IContextProvider<ContextClass1,T2> { }
public class ContextProviderTwo<T2> : IContextProvider<ContextClass2,T2> { }
公共接口IContextProvider{}
公共类ContextProviderOne:IContextProvider{}
公共类ContextProviderTwo:IContextProvider{}
如何将我的服务添加到DI?

您是否尝试过:

services.AddScoped(typeof(IContextProvider<T1>), typeof(ContextProviderOne<T1>));
services.AddScoped(typeof(IContextProvider<T2>), typeof(ContextProviderTwo<T2>));
services.addScope(typeof(IContextProvider)、typeof(ContextProviderOne));
addScope(typeof(IContextProvider),typeof(ContextProviderTwo));

services.addScope(typeof(IRepository)、typeof(IRepository))是如何定义的应该可以工作,
IRepository
不能被实例化,它是一个接口,而不是一个具体的类。你的意思是说以下注册对内置容器不起作用<代码>服务.addScope(typeof(IContextProvider),typeof(ContextProviderOne));addScope(typeof(IContextProvider),typeof(ContextProviderTwo))?@Tseng:这显然是一个输入错误。它说,
应用程序引发了一个未经处理的异常。System.ArgumentException:提供的泛型参数数量不等于泛型类型定义的arity。参数名称:实例化
是否找到此问题的解决方案?