Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependency injection Ninject是否自动注入非绑定类?_Dependency Injection_Ninject - Fatal编程技术网

Dependency injection Ninject是否自动注入非绑定类?

Dependency injection Ninject是否自动注入非绑定类?,dependency-injection,ninject,Dependency Injection,Ninject,我的Ninject被连接到注入实现IController(Controller类就是这样做的)的类。但是,我没有将MyClass绑定到任何东西,但是Ninject仍然将MyClass注入MyController 我想我的问题是,为什么它注入了我没有绑定到任何东西的东西?Ninject是否运行了一个函数来查找签名为MyClass的类?如果我的构造函数需要一个MyBaseClass,并且我的程序集中有两个类继承自Ninject V1中的MyBaseClass?,则我假设此行为会有所不同,隐式自身绑定

我的Ninject被连接到注入实现
IController
(Controller类就是这样做的)的类。但是,我没有将
MyClass
绑定到任何东西,但是
Ninject
仍然将
MyClass
注入
MyController


我想我的问题是,为什么它注入了我没有绑定到任何东西的东西?Ninject是否运行了一个函数来查找签名为MyClass的类?如果我的构造函数需要一个
MyBaseClass
,并且我的程序集中有两个类继承自Ninject V1中的
MyBaseClass

,则我假设此行为会有所不同,隐式自身绑定是一个顶级配置设置(默认为true IIRC)

在V2中,您观察到的隐式自绑定行为更深入(尽管有关闭它的方法——就像Ninject的大多数部分一样,它是非常细粒度和最小的)。在V2中,默认行为是,如果不存在其他绑定,则始终生成具体类型的自绑定。通常执行
Bind().ToSelf()
的唯一时间是自定义绑定,例如执行
.InSingletonScope()

有关在V2+中关闭它的方法,请参见此

现在就在源代码中为隐式绑定做一个grep吧——它比人们喋喋不休的阅读要容易得多

另外,不要忘记查看Ninject.Extensions.Conventions和Ninject.org上的测试,以安排将
I*X*
隐式绑定到
*X*

(正如Steven提到的,如果您将您的
MyClass
类更改为
abstract
),Ninject将不会自动绑定)

相关:
public class MyController : Controller
{
   private MyClass _class;

   public MyController(MyClass class)
   {
       this._class = class;
   }
}

public class MyClass
{
      // stuff
}