依赖注入实用信息?

时间:2011-02-13 14:40:50

标签: dependency-injection ioc-container

我在使用IoC容器来理解依赖注入概念的实践方面时遇到了问题。我使用IControllerControllerFactory类上实现依赖注入没有问题。这是大多数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);

1 个答案:

答案 0 :(得分:2)

在代码IFoo bar = Container.Resolve<IFoo>中随处写作并不是一个好主意。它是服务定位器模式。 DI 的想法是从你的类中取出依赖关系。最好的方法是在你的classe的构造函数中引入它们。并且仅从Container请求根类。其他依赖项应该自动解决。