Ninject + 绑定通用存储库

48

我正在尝试将通用的IRepository<>接口绑定到我的通用Repository<>上,但它总是返回null?

我尝试了各种方法,例如:

Bind(typeof(IRepository<CustomerModel>)).To(typeof(Repository<CustomerModel>)); 
Bind(typeof(IRepository<>)).To(typeof(Repository<>)); 

然而,如果我传入一个非泛型的接口和类,则它就像梦想一样运行?

2个回答

83
Bind(typeof(IRepository<>)).To(typeof(Repository<>));
这是绑定开放泛型的正确语法。 如果你请求 IRepository< of whatever >时收到 null 值,那么可能存在其他代码区域中你未分享的问题。

太好了!- 是的,你说得对。我的存储库构造函数依赖于一个接口 - 我现在也绑定了存储库使用的接口,它可以工作了!- 谢谢。 - ebb
5
如果IRepository需要多个类型参数(如IRepository<T,U>),语法会是什么样子?请参见https://dev59.com/3mw15IYBdhLWcg3wO5SX。谢谢。 - Daniel Liuzzi

3
请参考我在MVC3控制器构造函数+Ninject的回答。
Ninject中的通用绑定工作正常。尝试在Repository中使用无参数构造函数。我认为问题就出在那里。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接