2011-08-04 11 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#は、静的継承または静的インターフェイスの実装をサポートしていません。静的変数です。どちらかの方法でシングルトンの形式にするだけです。シングルトンを使用するか、DIコンテナを使用してロガーの依存関係を注入してください。