これは主観的なものであり、ベストプラクティスがあるとは言いませんが、次のようになります。
- DebuggerDisplayAttributeは、他のタイプのオブジェクトよりも一部のタイプのオブジェクト(つまり、カスタムデータ構造)でより便利だと思いますか?
最も一般的な使用法は、ビジネスエンティティを表すタイプです。通常、ID+名前を表示します。また、アプリケーションのコレクションに格納されるすべてのタイプ。
それ以外は、デバッガーでプロパティを頻繁に検索していることに気付いたときに追加します。
2.パブリックタイプ、内部タイプ、またはその両方で定義しますか?
両方。
3.通常、最初の実装に追加しますか、それともテスター/ユーザーが要求するのを待ちますか?
テスター/ユーザーには表示されません。デバッグ中にのみ使用されます。
4. DebuggerDisplayAttributeを定義する方がよいのはいつですか。また、.ToString()をオーバーライドする方が理にかなっているのはいつですか。
ロギングまたはアプリケーション固有の目的で、実行時に表現が必要な場合は、ToString()をオーバーライドします。デバッグにのみ必要な場合は、DebuggerDisplayAttributeを使用します。
5.属性で公開するデータの量に関するガイドライン、または含める計算量の制限はありますか?
実行時に使用されないため、唯一の制約は、デバッグエクスペリエンスを妨げないように十分に高速である必要があることです(特に、コレクションの要素に対して複数回呼び出される場合)。
ランタイムロギングの場合のように(たとえば、.ToStringをオーバーライドすることによって)機密データを公開することを心配する必要はありません。そのようなデータはデバッガーでとにかく表示されるためです。
6.基本クラスに適用する方が有益な継承ルールが適用されますか?
いいえ、必要なクラスに適用してください。
7.いつ、どのように使用するかを決める際に考慮すべきことは他にありますか?
他に考えられることはありません。