我一直在用PRISM構建應用程序,這個應用程序在未來幾年中將會很多,所以它被設置爲模塊化並且考慮到IoC。 在這個應用程序中,我正在爲日誌記錄機制實現Nlog。PRISM解決與使用類型解決的工廠的接口
因爲我不想在我的整個應用程序添加到NLOG參考我已經創建了一個接口,用於記錄
public interface ILog
{
void Log(LogLevel loglevel, string format);
void Log(LogLevel loglevel, string format, params object[] args);
void Log(LogLevel loglevel, Exception exc, string format, params object[] args);
}
我也創建了一個接口,爲工廠
public interface ILogFactory
{
ILog Initialize(Type type);
}
工廠接受一個Type參數,該參數可用於爲該類創建特定的記錄器。現在來挑戰我要使用ILog的問題我想要一個使用目標類型類的實例。
public class ClassA
{
private ILog Logger { get; set;}
public ClassA(Ilog logger)
{
Logger = logger;
}
}
我如何電線我ILogFactory到PRISM等使用ILOG一類是採用ILogFactory.Initialize(類型類型),在這種情況下的typeof(ClassA的)的決心。
您可以簡單地將ILogFactory作爲依賴注入到ClassA中。類a只是使用恰好是ILog實現的工廠實例。 – Xeun
我目前正在使用它,它的工作原理,但只需要有一個Ilog使得類更簡單 –
是的,我明白你想達到什麼目的,但它不會那樣工作。 您的課程取決於Factory sicne,它不知道如何創建ILogger,但Factory確實如此 - 因此Factory是您班級的依賴項。我認爲你只是在解決這個問題。讓班級依靠工廠,你很好走 – Xeun