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

时间:2011-05-16 07:37:16

标签: ninject

我有一个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 个答案:

答案 0 :(得分:2)

你的装配在Ninject本身之外。默认配置不允许注入任何公共构造函数,属性......您可以更改配置。看看NinjectSettings。