我有一个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公之于众,但我想知道是否还有另一种方式。
感谢您的时间。
答案 0 :(得分:2)
你的装配在Ninject本身之外。默认配置不允许注入任何公共构造函数,属性......您可以更改配置。看看NinjectSettings。