通用存储库的依赖注入

时间:2017-11-19 11:22:22

标签: c# asp.net-mvc asp.net-core unity-container

使用3个参数注册Generic类的方法是什么

public interface ITest<T,V,VE>
{

}

public class TestRespository<T,V,VE>:ITest<T,V,VE>
{

}

我已经注册了这个

services.AddScoped(typeof(ITest<,,>), typeof(ITest<,,>));

但无法进入构造函数以及

service.GetService(typeof(ITest<TestClass, vTestClass, VETestClass>)) as ITest<TestClass, vTestClass, VETestClass>;

2 个答案:

答案 0 :(得分:4)

问题在于调用AddScoped()方法。您应该在第二个参数中传递实现类型,而不是接口本身的类型:

services.AddScoped(typeof(ITest<,,>), typeof(TestRespository<,,>));

答案 1 :(得分:0)

services.AddScoped(typeof(ITest<,,>), typeof(ITest<,,>));

您需要implementationinterface而不是interface两次。您正在将interface注册为interface,因此不能instantiated

services.AddScoped(typeof(ITest<,,>), typeof(TestRepository<,,>));

应该做的伎俩。