Oma*_*mar 5 dependency-injection ninject
public class MyController : Controller
{
private MyClass _class;
public MyController(MyClass class)
{
this._class = class;
}
}
public class MyClass
{
// stuff
}
Run Code Online (Sandbox Code Playgroud)
我的Ninject被连接到注入实现的类IController(Controller类这样做).但是,我没有绑定MyClass到任何东西,但Ninject仍然是注射MyClass到MyController.
我想我的问题是,为什么它会注入一些我没有绑定到任何东西的东西?Ninject是否会找到带有签名的班级MyClass?我假设如果我的构造函数需要一个MyBaseClass并且我的程序集中有两个继承自的类,这种行为会有所不同MyBaseClass吗?
在Ninject V1中,ImplicitSelfBinding是一个顶级配置设置(默认为真正的IIRC).
在V2中,您观察到的隐式自绑定行为更加深入(虽然有一些方法可以将其关闭 - 就像Ninject的大多数位一样,它非常精细且极小).在V2中,默认行为是,如果不存在其他绑定,则始终生成具体类型的自绑定.你通常做的唯一一次Bind<Concrete>().ToSelf()是定制绑定,例如,做一个.InSingletonScope().
请参阅@Remo Gloor的回答,了解如何在V2 +中将其关闭.
现在就在ImplicitSelfBinding中为源代码做一个grep - 虽然它比人们的兔子更容易阅读!
也不要忘记Ninject.Extensions.Conventions在ninject.org上查看并测试安排隐式Bind()的I*X*to*X*
(正如史蒂文提到的那样,如果你改变你的MyClass班级,Ninject不会自我约束abstract.)
| 归档时间: |
|
| 查看次数: |
2291 次 |
| 最近记录: |