首页 文章

使用Ninject隐藏不同图层中的类型

提问于
浏览
1

我有一个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公之于众,但我想先知道是否还有其他方法 .

谢谢你的时间 .

1 回答

  • 2

    你的程序集是Ninject本身的外部 . 默认配置不允许注入任何公共构造函数,属性......您可以更改配置 . 看看NinjectSettings .

相关问题