問題タブ [debuggerdisplay]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio-2008 - DebuggerDisplay 属性が期待どおりに機能しない
この属性は C# で機能するはずですが、私の場合は機能しません。私は怠惰なプロパティChildrenを持つクラスを持っています。このプロパティにアクセスすると、サーバーへのラウンドトリップという副作用が生じる場合があります。したがって、当然のことながら、デバッガーの監視ウィンドウで監視するだけでは、これが発生することは望ましくありません。
無関係な詳細をすべて省略すると、ソースはごく普通に見えます。
それでも、オブジェクトを監視this
してウォッチ ウィンドウで展開すると、ディスプレイに (Frozen) が表示されません。つまり、デバッガーは単に属性を無視します。
Reflector によると、この属性は実際に存在します。私はVS2008を使用しています。
何か案は?
c# - DebuggerDisplay 属性を使用する必要があるのはいつですか? これを使用する利点は何ですか?
DebuggerDisplay 属性を使用する必要があるのはいつですか? これを使用する利点は何ですか?
.net - DebuggerDisplayAttributeを使用してオブジェクトをレンダリングするメソッドはありますか
DebuggerDisplayAttributeで装飾されたクラスがいくつかあります。
これらのクラスのインスタンスを表示する単体テストにトレースステートメントを追加できるようにしたいと思います。
DebuggerDisplayAttributeを使用してフォーマットされたオブジェクトを表示する(または、DebuggerDisplayAttributeが定義されていない場合は.ToString()の使用にフォールバックする)メソッドが.NET Frameworkに存在しますか?
編集
明確にするために、私はフレームワークに何かが組み込まれているのではないかと期待していました。DebuggerDisplayAttributeからValueプロパティを取得できることはわかっていますが、DebuggerDisplayAttribute.Valueで表されるフォーマット文字列を使用してインスタンスをフォーマットする必要があります。
私が自分自身を転がす場合、私は次の線に沿った拡張方法を想像します:
c# - C#デバッグ:[DebuggerDisplay]またはToString()?
デバッガーで表示する代わりに、デバッグ情報の有用性を高めるには2つの方法があり{MyNamespace.MyProject.MyClass}
ます。
これらは、の使用法DebuggerDisplayAttribute
とToString()
方法です。
また
どちらか一方を優先する理由はありますか?両方をしない理由はありますか?それは純粋に個人的な好みですか?
c# - PropertyGrid C#でDebuggerDisplayを表示する
デバッガーの表示をPropertyGridのクラスのテキストにすることは可能かどうか疑問に思いました。
私はどこにもこの答えを見つけることができないようです。
これが私が持っているものの例です。
このモジュールはEngineクラスに保持されているため、propertyGrid.SelectedObject = engineInstanceを設定すると、プロパティグリッドに表示されます。
エンジン
+ DebugModuel | 「FPS=60」
FPS | 60
c# - [DebuggerDisplay(...)] 属性が役立つ例
ToString()
何かをオーバーライドすることが明らかに望ましい具体的な例を探していますが、[DebuggerDisplay(...)]
カスタム属性を使用してデバッガーで何か他のものを表示しますか?
c# - DebuggerDisplay - 角かっこで入力
これは次のようにレンダリングされます。
この:
次のようにレンダリングします。
違いはなぜですか?
編集:違いの理由はわかっています。私の質問は、色のテキストをハードコーディングせずに 2 番目の結果を達成する方法です。
c# - DebuggerDisplayAttributeを使用する場合
DebuggerDisplayAttributeに関するいくつかのベストプラクティスは何ですか?いつ、どのように属性をコードに適用するかについての決定を導くものは何ですか?例えば..
DebuggerDisplayAttribute
一部のタイプのオブジェクト(つまり、カスタムデータ構造)では、他のオブジェクトよりも便利だと思いますか?- パブリックタイプ、内部タイプ、またはその両方で定義しますか?
- 通常、最初の実装に追加しますか、それともテスター/ユーザーが要求するのを待ちますか?
- いつ定義するのが良いですか
DebuggerDisplayAttribute
、そしていつオーバーライドする方が理にかなっています.ToString()
か? - 属性で公開するデータの量に関するガイドライン、または含める計算量の制限はありますか?
- 基本クラスに適用する方が有益な継承ルールが適用されますか?
- いつ、どのように使用するかを決める際に考慮すべきことは他にありますか?
c# - [DebuggerDisplay]属性で拡張メソッドを使用する
属性[DebuggerDisplay](DebuggerDisplayAttributeを使用)を使用すると、VS2010/2008のデバッガーで表示を定義できます。AutoExp.cs / .dllを変更することで、システムタイプやサードパーティタイプの表示を上書きすることもできます。
内側の中括弧では、フィールド、プロパティ、およびメソッドを参照できます。拡張メソッドを参照することは可能ですか?
例として、たとえば。$SCG.Dictionary
の代わりに、より短いタイプ名を表示しようとしましたSystem.Collections.Generic.Dictionary
。これをAutoExp.csに追加しました:
しかし、デバッガーは文句を言います:名前'ShortName'は現在のコンテキストに存在しません。
私は何かが足りないのですか、それともそこで拡張メソッドを使用することができないのですか?
オーバーライドできることはわかっていますToString ()
が、それは自分のタイプにのみ役立ちます。