我在我的項目中使用依賴注入有一個小問題。爲了描述問題,我將使用簡單的例子。假設我在寫記錄器應用程序,並且最終用戶可以選擇是將日誌保存到文件還是寫入控制檯。用戶通過選擇運行應用程序中的複選框來控制它。他可以選擇兩個或只有一個。選擇後,點擊「LOG」按鈕執行操作。 現在我從我的DI的知識瞭解我應該創建接口:依賴注入和接口的很多實現
public interface ILogger
{
void log();
}
和兩個實現
public class ConsoleLogger : ILogger
{
public void log()
{
...
}
}
public class FileLogger : ILogger
{
public void log()
{
...
}
}
我知道我可以在例如統一容器都實現註冊,並讓他們在構造函數通過使用表,但是然後我不能識別哪個實施方式中是FileLogger並且其ConsoleLogger(在情況下,當用戶僅選擇一個複選框)
第二選項是解決IMPL使用服務定位器模式來自ioc的名字。我不知道這是否是一個好方法
在我的實際應用中,我將有更多的選擇超過兩個,有將每個選項是一個很大的共享接口。
也許最好是使用MEF?
應用程序將使用WPF + PRISM編寫。
我明白,我所有的工廠應該是我的根組成部分。謝謝! – niba