Mut*_*pan 0 .net c# design-patterns dependency-injection ioc-container
可以通过使默认构造函数初始化依赖对象来解决依赖关系,如下所示.
public class Foo:IFoo
{
public void disp()
{
//some code
}
}
public class MyClass
{
IFoo ifoo;
public MyClass():this(new Foo())
{
}
public MyClass(IFoo i)
{
this.ifoo = i;
}
void method1()
{
ifoo.disp();
}
}
Run Code Online (Sandbox Code Playgroud)
类似地,所有依赖关系都可以通过上面的2个构造函数来解决,单元测试框架可以使用它直接使用参数化构造函数.
在这种情况下,实现IunityContainer和服务定位器来创建实例的优点是什么.
具有两个构造函数被认为是反模式.看看这篇文章.
在容器中使用容器作为服务定位器也被视为反模式.看看这篇文章和这篇文章.
您应该有一个接受所有依赖项的构造函数,然后您应该在Composition Root中创建该对象.