を使用しCallerMemberNameAttribute
て、発信者の名前を表示できます。
public void WriteDebug(string message, [CallerMemberName] string memberName = "")
{
Debug.Write("[" + memberName + "] " + message);
}
さらに診断するためにこの情報を含めるために使用できるともCallerLineNumberAttribute
あります。CallerFilePathAttribute
これらの属性については、MSDN で詳しく説明されています。on メソッドと組み合わせると[Conditional("DEBUG")]
、リリース ビルドでは完全に排除されるデバッグ中に多くの情報を提供できます。
C# にはインライン化がないことはわかっていますが、このようなステートメントを複製する必要がないように、「スニペット」を使用する以外に、この状況に対する別の解決策はありますか?
これは、診断のために呼び出し元のメンバーの情報を取得することと同様に、「インライン化」とは直接関係がないことに注意してください。そうは言っても、JIT はコードの実行時にインライン展開を確実に実行します。これは、C# のパフォーマンスが優れている主な理由の 1 つです。
これには Visual Studio 2012 が必要です。これは、そのリリースの新しいコンパイラ機能を使用して機能するためです。
StackTrace
古いコンパイラを使用している場合、スタック トレース情報を取得するために使用する別の方法があります。ただし、これはパフォーマンスにかなり大きな影響を与えるため、デバッグ中の診断には引き続き機能しますが、少なくとも本番環境ではタイトループで使用するものではありません.
string callingMethodName = (new StackTrace()).GetFrame(1).GetMethod().Name;