我們正在將一個現有的日誌記錄庫封裝到C#應用程序中的自己的日誌記錄服務中,以便在某些日誌記錄情況下使用預定義的方法將它包圍。通用依賴注入與Unity
public class LoggingBlockLoggingService : ILoggingService
{
private LogWriter writer;
public LoggingBlockLoggingService(LogWriter writer)
{
this.writer = writer;
}
....//logging convenience methods, LogWarning(), etc...
}
我想,這樣只有在對其進行實例化類的類型來修改這個實現(底層記錄,日誌寫在這種情況下,將是一個單例)。因此,要麼讓這個實現(和接口ILoggingService)通用:
public class LoggingBlockLoggingService<T> : ILoggingService<T>
{
...
private string typeName = typeof(T).FulName;
...
或添加額外的構造函數參數:
public class LoggingBlockLoggingService : ILoggingService
{
private LogWriter writer;
private string typeName;
public LoggingBlockLoggingService(LogWriter writer, Type type)
{
this.writer = writer;
this.typeName = type.FullName;
}
....//Include the typeName in the logs so we know the class that is logging.
}
是否有註冊我們的類型時,配置此一次團結方式?我想避免爲每個想要登錄的課程添加條目。理想情況下,如果有人想將日誌記錄添加到項目中的類中,他們只需將ILoggingService添加到正在工作的類的構造函數中,而不是將另一行添加到我們的Unity配置中以註冊他們正在處理的每個類。
我們正在使用運行時/碼的配置,而不是XML
賓果,謝謝! 我曾嘗試類似的東西與container.RegisterType。刪除尖括號並使用基本方法正是我所需要的。 –
Dan
2013-04-04 15:24:03