いくつかのメソッドの前後に呼び出したいロギング ロジックがあります。各メソッドは、異なる数/タイプのパラメーターを受け入れます。各メソッドを呼び出すときにロギング ロジックを複製する必要がないように設定しようとしています。いくつかのデリゲートを作成することで、重複の量を減らすことができました。使用されるパラメーターの数/タイプごとにデリゲートを作成しました。各デリゲートを受け入れてログを記録するメソッドがあります。ただし、私はまだ約 6 つの異なるデリゲートを持っているので、ロジックはそれらの 6 つに対して複製されます。
これを変更する必要はないと思うので、パラメーターの数に関係なく、ログを記録してメソッドを呼び出すメソッドが 1 つあります。しかし、私はそれを理解することができませんでした。
以下は、重複しないようにしようとしているデリゲートの 1 つとロジックの例です。
public delegate void LineOfBusinessHandler(DateTime runDate, LineOfBusinessCode lineOfBusinessCode);
public void Run(DateTime runDate, ProcessCode process, LineOfBusinessCode lineOfBusinessCode, LineOfBusinessHandler del)
{
this.ProcessManager.AddToBatchLog(process.ToString(), ProcessStatus.Started.ToString(), null, runDate);
try
{
del(runDate, lineOfBusinessCode);
this.ProcessManager.AddToBatchLog(process.ToString(), ProcessStatus.Finished.ToString(), null, runDate);
}
catch (Exception e)
{
int errorId = SystemManager.LogError(e, process.ToString());
this.ProcessManager.AddToBatchLog(process.ToString(), ProcessStatus.Errored.ToString(), errorId, runDate);
}
}