最近我一直在研究依赖注入和控制反转实践,以努力改进我们的应用程序框架的体系结构,我似乎无法找到一个好的答案题。这很可能是我的术语混淆,混淆,或者我现在对这个概念只是天真的,所以任何链接或澄清,将不胜感激。序列化依赖注入配置/控制反转
许多DI和IoC容器的例子并没有说明当你有一个可能的“插件”“库”,或者如何“序列化”一个给定的配置时,容器将如何连接在一起。 (从我读过的关于MEF的文章可以看出,如果你的对象只需要1 [Import],那么对于同一类型的[Export]多个声明将不起作用)。也许这是一种不同的模式,或者我被我目前的思维方式蒙上了一层阴影。
下面是一个例子参考一些代码:IoC.Resolve vs Constructor Injection
: 关于“细粒度背景”,其中同一对象的两个实例所需要的“引擎”类的不同实现public abstract class Engine {
}
public class FastEngine : Engine {
}
public class MediumEngine : Engine {
}
public class SlowEngine : Engine {
}
public class Car
{
public Car(Engine e)
{
engine = e;
}
private Engine engine;
}
这篇文章会谈
有没有一个好的框架可以帮助你配置或序列化一个配置来实现类似这样的事情,而不需要对它进行硬编码或手动滚动代码来做到这一点?
public class Application
{
public void Go()
{
Car c1 = new Car(new FastEngine());
Car c2 = new Car(new SlowEngine());
}
}
示例XML:
<XML>
<Cars>
<Car name="c1" engine="FastEngine" />
<Car name="c2" engine="SlowEngine" />
</Cars>
</XML>
谢谢那些提供答案的人。 虽然其他答案给出了具体框架的例子,但可以接受的答案指出,许多DI框架可以通过XML配置(Unity,Spring等)完成此功能。您可以根据平台和偏好确定使用哪一个。 – 2010-06-09 14:37:11