2011-02-13 61 views
2

我在使用IoC容器理解依赖注入实用面时遇到问题。我在使用ControllerFactoryIController类上实施依赖注入时没有问题。这是大多数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

相关:http://stackoverflow.com/questions/4570750/dependency-injection-turtles-all-the-way-down – 2011-02-15 18:13:09

回答

2

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

+0

请看我更新的问题,为什么我仍然在这里失去一些东西?!?请注意,“IFoo”不一定是“服务”...... – Ropstah 2011-02-13 14:53:12