我正在尝试在Ninject中注册一个通用接口,然后我想要那个通用接口的其他接口:
public interface ISE<T> { }
public class SE<T> : ISE<T> { }
public interface IConcreteSE_A : ISE<SomeClass_A> { }
public interface IConcreteSE_B : ISE<SomeClass_B> { }
public interface IConcreteSE_C : ISE<SomeClass_C> { }
kernel.Bind(typeof(ISE<>)).To(typeof(SE<>));
kernel.Bind<IConcreteSE_A>().To(typeof(SE<>));
kernel.Bind<IConcreteSE_B>().To(typeof(SE<>));
kernel.Bind<IConcreteSE_C>().To(typeof(SE<>));
但是我得到一个错误:当我尝试注入时,给出的通用参数的数量不等于通用类型定义参数的数量 IConcreteSE_A
到我的网络API控制器。
如何解决?
答案 0 :(得分:1)
这是因为IConcreteSE_A
和ISE<SomeClass_A>
之间没有隐式引用转换。换句话说,无法保证实现SE<SomeClass_A>
的{{1}}实际上满足ISE<SomeClass_A>
的实现。
您可以通过创建一个实现两个接口然后绑定到该接口的具体类来解决此问题。
IConcreteSE_A