2011-08-04 88 views
0

對不起,它可能是重複的,但在其他靜態接口中,他們提到了我沒有使用的泛型。c中的靜態接口#

我想爲我的應用程序快速簡單的記錄我雖然我可以避免使用靜態元素的單身。 我想保留接口,以便以後我可以更改爲另一個日誌記錄程序包。界面適合我(我可能在這裏是錯誤的)一種實現「外觀」功能的方式。

我有這種感覺,我忽略了一些東西。 在正確的方向輕輕推動將不勝感激。 (希望它有點更清晰)

public interface Ilogger 
{ 
    void Log(string data, out DateTime datetime, out string uid); 
} 

public class Logger : Ilogger 
{ 
    private static TraceSource AppTrace = new TraceSource("RD", SourceLevels.All); 

    static Logger() 
    { 
     AppTrace.Listeners.Clear(); 
     AppTrace.Listeners.Add(new DelimitedListTraceListener("RD.log")); 
    } 

    static void Log(string data, out DateTime datetime, out string uid) 
    { 
     datetime = DateTime.Now; 
     uid = Guid.NewGuid().ToString(); 

     AppTrace.TraceInformation(datetime + ";" + uid + ";" + data); 
    } 
} 
+1

這並不是真的很清楚你想達到什麼,或者「靜態接口」會發揮作用......請編輯你的問題來澄清它。 –

+0

你們很快就觸發了!乾杯 –

回答

1

你想結合一個單身人士與門面。對服務定位器進行排序。即創建一個與您的界面具有相同方法的單例,然後將界面作爲單例分配給外觀。

I've blogged about it

+0

謝謝Jgauffin,這就是我最初寫的。但後來認爲如果我只是使用靜態方法,它會簡化這種情況。所以沒有其他(更簡單)的方法來做到這一點? –

1

C#不支持靜態繼承或靜態接口實現。靜態變量只是一種Singleton的形式,無論你如何看待它 - 只需使用Singleton或更好地使用DI容器來注入記錄器依賴項即可。