Ninject - 类库项目中静态类中的内核

ria*_*mri 2 c# dependency-injection ninject inversion-of-control

我有与Ninject相同的问题- 静态类中的内核? 但我没有使用WCF,只是一个类库.

拥有静态内核或在任何时候实例化它更好吗?我的UI(现在在MVC应用程序中)使用该服务,所以它会调用静态内核吗?什么是最好的方法?

Ale*_*r R 6

使用IoC时,首选方法是尽可能少地使用内核.它应该在初始化时使用,以便将所有内容挂起,然后快速安静地褪色到背景中.因此,应用"好莱坞原则":"不要打电话给IoC容器,让它给你打电话!".包含内核的静态类是所谓的服务定位器反模式,请参见此处.

简而言之:您将希望使用构造函数注入来注入依赖项,而不是每次创建内核或引用静态类.