ToString()をデバッグに表示する方法
-
26-10-2019 - |
質問
デバッグモードで制御下にあるクラスのToString()に表示したいと思います。
マウスで変数の上に浮かんでいるときにこれが最初に現れるのはいいことです。これに対する属性はありますか?
解決
クラスにマークを付けます
[System.Diagnostics.DebuggerDisplay("{ToString()}")]
テスト:
[System.Diagnostics.DebuggerDisplay("{ToString()}")]
class MyClass
{
private string _foo = "This is the text that will be displayed at debugging"
public override string ToString()
{
return _foo;
}
}
今、あなたがマウスで変数の上にホバリングすると、それは表示されます This is the text that will be displayed at debugging
.
他のヒント
がある DebuggerDisplayAttribute
ディスプレイに影響を与えることができます。かなり複雑な式を書いてデバッグ出力を生成することができますが、 そうすることはお勧めしません.
ただし、オーバーライデンがある場合 ToString
次に、デバッガーがデフォルトでそれを表示するように文書化されます。たぶん、コードに何か問題がありますか?
の出力 ToString
デバッグ時に表示されるデフォルトである必要があります。
を使用してオーバーライドできます DebuggerDisplay
属性(参照 MSDN).
私はオーバーライドすることを好みます ToString
メソッドは、ファイルをログに記録するときにも役立つため、より簡単かつ汎用性が高いためです。
どの出力が見えますか?タイプ名を取得した場合、デフォルトが表示されます ToString
.
あなたが探しているのはです DebuggerDisplayAttribute
:
http://www.codeproject.com/articles/117477/using-debuggerdisplayattribute
上記のリンクを使用して、それがどのように行われているかを確認し、これをクラスに適用し、 ToString()
表示されているものを駆動する方法。プロパティのみを使用したことがありますが、クラスを注入できるかどうかはわかりません。
同様の問題がありました。私のクラスにはToString()Overrideがありましたが、VSにはまだ表示されていませんでした。
属性[System.Diagnostics.DebuggerDisplay( "{toString()}}")]をクラスに追加すると、ToStringが表示されるはずのVisual Studioデバッガーで例外が示されました。実装でstring.format()を使用して誤ってバグがありました。これは興味深い動作です - vsは例外の場合にデフォルトのToStringに戻ります。上記の属性の使用法により、ディスプレイにメソッドの出力 - 有効または例外が表示されます。これは、toString()のデバッグに非常に役立ちます。そうしないと、クラスがデフォルトでオンになっているため、この属性を各クラスに明示的に追加することは意味がありません。
オブジェクトでは、次のように.toStringをオーバーライドします。
public class MyObject
{
public int Property1{ get; set; }
public string Property2{ get; set; }
public string Property3 { get; set; }
public override string ToString()
{
return Property3;
}
}
これにより、property3がtoString()値として返されます
Visual Studioを使用している場合、watch @ runtime om the yourvariable.tostring()行を追加できます。これは、画面の下部にブレークポイントにヒットすると表示されます