我在使用IoC容器来理解依赖注入概念的实践方面时遇到了问题。我使用IController
在ControllerFactory
类上实现依赖注入没有问题。这是大多数IoC容器中的默认示例。
但现在呢?只是在代码中使用IFoo bar = Container.Resolve<IFoo>;
而不是IFoo bar = new Foo();
吗?
更新 根据 gor ,这不是一个好主意。应该使用构造函数引入依赖关系。
但这在实践中意味着什么?
interface IFoo {
IDependent dependency;
}
class Foo : IFoo {
public Foo(IDependent dependency) {
this.dependency = dependency;
}
}
IFoo bar = new Foo(dependencyInstance);
答案 0 :(得分:2)
在代码IFoo bar = Container.Resolve<IFoo>
中随处写作并不是一个好主意。它是服务定位器模式。 DI 的想法是从你的类中取出依赖关系。最好的方法是在你的classe的构造函数中引入它们。并且仅从Container
请求根类。其他依赖项应该自动解决。