【发布时间】:2011-12-31 15:09:18
【问题描述】:
假设我们有课:
public class WithDependencies
{
public WithDependencies(IAmDependencyOne first, IAmDependencyTwo second)
// ...
}
现在是问题。如何在应用程序中创建 WithDependencies 类的对象? 我知道有很多方法。
new WithDependencies(new DependencyOne(), new DependencyTwo());
new WithDependencies(IoC.Resolve(IDependencyOne), IoC.Resolve(IDependencyTwo());
// register IDependencyOne, IDependencyTwo implementations at app start
IoC.Resolve(WithDependencies);
// register IDependencyOne, IDependencyTwo implementations at app start
// isolate ourselves from concrete IoC Container
MyCustomWithDependenciesFactory.Create();
等等……
你觉得怎么做?
编辑:
因为我没有得到答案或者我不理解它们,所以我会尝试再次询问。假设在某些事件(按钮、计时器等)上,我需要新对象 WithDependencies()。我如何创建它?假设已经配置了 IoC 容器。
【问题讨论】:
-
我认为对此的任何答案都将从“它取决于”开始......我已经看到了第一种方法的论据,因为它至少使您的依赖关系保持在一种层次结构中,而不是需要一些大型的全球服务提供商。
标签: dependency-injection inversion-of-control ioc-container