0

各クラスがロガー クラスの単一のインスタンスを共有する必要があるクラス ライブラリを使用しています。ロガーは私のものではありません。つまり、私が参照している dll です。ロガーがインスタンス化されるときに作成される単一のログ メッセージ ファイルの末尾にすべてのメッセージを追加する必要があるため、共有が必要です。

インスタンス化された後、ロガークラスを参照渡しすることを考えましたが、これは非常に醜い依存関係につながります。

私は銃の下にいて、実験する時間があまりありません。これを達成するための最良の方法に関する提案はありますか? 私は静的クラスが答えかもしれないと考えていますが、私が行う実装には時間がかかるので、袋小路に行きたくありません。

======================= 更新 ==================

これを処理する最も迅速でクリーンな方法は次のとおりです。

    public class Logger
{
    private static LoggerTool _loggerTool;

    public static void WriteLogMessage(string message)
    {

        if (_loggerTool == null)
        {
            // Create a new log file
            string logFileName = "LogFile-" + DateTime.Now.ToString("HHmmss");

            _loggerTool = new LoggerTool(logFileName);
        }

        _loggerTool.LogMessage(message);
    }
}
4

2 に答える 2

2

静的クラスを作成し、シングルトン パターンを実装することは、最もクリーンな方法ではありませんが、確実に機能します。カップリングのために、単体テストなどがより困難になります。

別のアプローチは、autofac などの依存性注入コンテナーを使用することです。

ここでは、DI を使用して単純なロガークラスを作成する簡単なチュートリアルを示します。

于 2013-01-25T01:26:24.730 に答える
2

何かのようなもの:

public static class LogManager
{
    private static Lazy<MyLog> logLazy = new Lazy<MyLog>(() => new MyLog());
    public static MyLog Log
    {
        get{
            return logLazy.Value;
        }
    }
}

それから

LogManager.Log.Warning("blah") 

コードのどこからでも。

于 2013-01-25T01:31:04.783 に答える