(.NET)DebuggerDisplayの件
サンプル
[DebuggerDisplay("Id={ID}, Name={Name,nq}")] public sealed class MyClass { public int ID{ get; set; } public string Name { get; set; } #if DEBUG public override string ToString() { return "ID=" + ID.ToString() + ", Nm=" + Name; } #endif }
Debugする分には優秀だが、
(スレッド同期などの関係でストップせずに一連で)ログに出したい際などは
ログに出てくれないので、
結局は ToString() をoverrideし、 #if DEBUG で囲むのが総合的に最適と思われる。
メソッド名/プロパティ名とか変わる際に(文字列定義なので)自動変更の対象外になっちゃうので。
ただし意図的に ToString() の実装が必要な場合は仕方がないのかなと。
その場合は ToString2() を #if DEBUG で囲んで実装すればいいや。DEBUGだし、いいや。