最近我一直在研究依賴注入和控制反轉實踐,以努力改進我們的應用程序框架的體系結構,我似乎無法找到一個好的答案題。這很可能是我的術語混淆,混淆,或者我現在對這個概念只是天真的,所以任何鏈接或澄清,將不勝感激。序列化依賴注入配置/控制反轉
許多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