【问题标题】:Hiding types in different layers using Ninject使用 Ninject 在不同层中隐藏类型
【发布时间】:2011-05-16 07:37:15
【问题描述】:

我有一个 Ninject 注入依赖项的类。其中一种注入类型与 Ninject 存在于不同的程序集中。但是,我在 Assembly1 中注册了该模块。

/*Assembly1.Dll (Logical layer)*/
internal class InternalType {}

public class Gobblin {

  InternalType _iType;

  internal Gobblin(InternalType iType) {
    _iType = iType;
  }
}

public class CommonModule : NinjectModule {

  public override void Load() {

    Bind<IInternalType>()
         .To<InternalType>()
         .InRequestScope();
  }

}
/*End assembly1 code*/

我的另一个程序集是一个 MVC Web 应用程序。我的一个控制器需要 Gobblin 类,但由于 Ninject 没有找到构造函数,绑定失败。

我知道 Ninject 无法访问 Gobblin 类的内部构造函数,但我假设是因为注册它的模块包含在它本来可以工作的同一个程序集中。

我可以在这里打破 OO 原则并将 InternalType 公开,但我想先知道是否有其他方法。

感谢您的宝贵时间。

【问题讨论】:

    标签: ninject


    【解决方案1】:

    您的程序集在 Ninject 本身之外。默认配置不允许注入非公共构造函数、属性......不过,您可以更改配置。看看 NinjectSettings。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 2011-04-01
      • 2017-10-28
      • 2016-10-02
      • 2016-05-21
      • 2012-03-05
      • 1970-01-01
      相关资源
      最近更新 更多