【问题标题】:Ninject + Bind generic repositoryNinject + Bind 通用存储库
【发布时间】:2011-05-21 05:00:34
【问题描述】:

我正在尝试将通用 IRepository 接口绑定到我的通用存储库 - 但是它总是返回 null?

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

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

但是,如果我传入一个非泛型接口和类,那么它会像做梦一样工作吗?

【问题讨论】:

    标签: c# ioc-container ninject


    【解决方案1】:
    Bind(typeof(IRepository<>)).To(typeof(Repository<>));
    

    这是绑定开放泛型的正确语法。

    如果您在请求 IRepository&lt; of whatever &gt; 时收到 null 回复,那么您尚未共享的代码区域可能存在其他问题。

    【讨论】:

    • 完美! - 是的,你是对的。我的存储库构造函数依赖于一个接口——我现在还绑定了我的存储库使用的接口,它可以工作了! - 谢谢。
    • @qes 如果 IRepository 采用多个类型参数(即IRepository&lt;T,U&gt;),语法会是什么。请参阅stackoverflow.com/q/6740992/88709 谢谢。
    【解决方案2】:

    MVC3 Controller constructor + Ninject 上查看我的回答。

    通用绑定在 Ninject 中正常工作。尝试在存储库中使用无参数构造函数。我认为问题就在那里。

    【讨论】:

      猜你喜欢
      • 2019-11-21
      • 2016-02-20
      • 2011-11-06
      • 2012-08-11
      • 2011-07-16
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多