C#で特定の関数呼び出しをno-opsに置き換える良い方法を(リフレクションまたは特別な属性を介して)知っている人はいますか?
基本的に、私がやろうとしていることはこのようなものです
#ifdef DEBUG
StopWatch.start();
#endif
DoSomething();
#ifdef DEBUG
StopWatch.stop();
Log.TimingInfo(StopWatch);
#endif
私のコードのいたるところに多くのifdefをまき散らすことなく。これ (私の StopWatch クラス) を null オブジェクト パターンに置き換えて、条件付きで null オブジェクトを割り当てることもできますが、コード内で厳密に no-op と比較すると、これはまだ理想的ではありません。ここではコード パスの長さが非常に重要です。タイミングの結果を収集しようとしていないときは、op がまったくないため、読みやすさをいくらか犠牲にしたいと思います。
C# で StopWatch クラスまたはメソッドにタグを付けて、コンパイラによって評価されたときにコードを出力しないようにする方法があるかどうかは誰にもわかりませんか?