3

Microsoft.NET が別の用途に提供する属性を使用することは適切ですか、それとも独自の属性を作成する必要がありますか?

たとえば、DescriptionAttributefor 列挙を「フレンドリ名」として使用している人をよく見かけます。ただし、私の理解では、DescriptionAttributeは IDE によって使用されることを意図しており、この理由からでした。

もう 1 つの例はDefaultAttribute、リフレクションを使用して、構築中にプロパティのすべてのデフォルト値を設定することです。

では、通常は意図されていない方法で属性を再利用することは、ベスト プラクティスの範囲内で許容されるのでしょうか?

4

4 に答える 4

1

個人的には、属性を再利用しません。私は自分のカスタムを作成します。

これにより、属性を使用して、将来誰かが私のクラスを予期しない方法で使用したときに、予期しない動作が発生するのを防ぐことができます。

于 2012-10-23T18:46:57.733 に答える
1

DefaultAttribute と DescriptionAttribute は、ビジュアル スタジオ デザイナーで使用されるコントロールである "propertygrid" コントロールによって使用されます。このコントロールを独自のコードで使用することも可能であり、これらの属性を使用することは理にかなっています

于 2012-10-23T18:47:04.227 に答える
0

Microsoft自身が投稿したベストプラクティスは、この件に関して何も言うことはありません。DescriptionAttributeMSDNページのコードの使用法は、この組み込み属性が他の方法で使用されていることを明確にしています。私は一般的に、あなたのプロジェクトにのみ関連性があるものに特別な意味を加えることは非常に危険だと思います。これは「部族の知識」と呼ばれ、他の人と協力するときに誤解が始まる主な方法の1つです。

.NET Frameworkでカバーされているユースケースがある場合は、すばらしいです。まず、そこにあるものを使用する必要があります。ただし、よくわからない場合は、自分で作成するのがおそらく最善です。

于 2012-10-23T18:53:47.807 に答える
0

MS が提供する定義を使用し、公式の定義に適合しない場合は独自の定義を作成してください。独自のコードを作成するのはばかげているように聞こえるかもしれませんが (新しいコードを作成するのに本当に時間がかかるわけではありません)、誰かがあなたのコードを読みに来て、「公式属性の代替の使用法」と題された 20 ページのマニュアルを読んでいない場合、彼はそうなるでしょう。何が起こっているのか混乱しています。

さらに、多くの .NET クラスがこれらの属性をチェックします。それらを誤用すると、非常に奇妙な動作になる可能性があります。

于 2012-10-23T18:47:34.223 に答える