属性の使用方法のガイドライン

.NET Framework を利用すると、開発者は新しい宣言情報を作成したり、さまざまなプログラム エンティティに対して宣言情報を指定したり、実行時環境で属性情報を取得できます。 たとえば、クラスやメソッドなどのプログラム要素に配置できる HelpAttribute 属性を定義して、それらのプログラム要素からドキュメントへの割り当てを実現できます。 新しい種類の宣言情報は、位置指定パラメーターと名前付きパラメーターを受け取る属性クラスの宣言を通じて定義します。 属性の詳細については、「カスタム属性の記述」を参照してください。

次の規則は、属性クラスの使用方法のガイドラインを示しています。

  • カスタムの属性クラスには、次の例に示すように、Attribute サフィックスを追加します。

    Public Class ObsoleteAttribute
    
    public class ObsoleteAttribute{}
    
  • 次の例に示すように、属性に対して AttributeUsage を指定して、その使用方法を正確に定義します。

    <AttributeUsage(AttributeTargets.All, Inherited := False, AllowMultiple := True)>  _
    
    Public Class ObsoleteAttribute
       Inherits Attribute
       ' Insert code here.
    End Class
    
    [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
    public class ObsoleteAttribute: Attribute {}
    
  • 属性クラスから派生クラスを作成できないように、属性クラスはできる限りシール クラスにします。

  • 必須パラメーターとして位置指定引数 (コンストラクター パラメーター) を使用します。 それぞれの位置指定引数と同じ名前の読み取り専用プロパティを用意します。ただし、両者を区別できるように大文字と小文字だけは変更します。 これによって、実行時に引数にアクセスできます。

  • 省略可能なパラメーターとして名前付き引数を使用し、それぞれの名前付き引数に読み取り/書き込みプロパティを用意します。

  • 1 つのパラメーターを名前付き引数と位置指定引数の両方として定義しないでください。 このパターンを説明するコード例を次に示します。

    Public Class NameAttribute
       Inherits Attribute
       Private userNameValue as String
       Private ageValue as Integer
    
       ' This is a positional argument.
       Public Sub New(userName As String) 
          userNameValue = userName
       End Sub
    
       Public ReadOnly Property UserName() As String
          Get
             Return userNameValue 
          End Get
       End Property
    
       ' This is a named argument.
       Public Property Age() As Integer
          Get
             Return ageValue 
          End Get
          Set
             ageValue = value
          End Set 
       End Property
    End Class
    
    public class NameAttribute: Attribute 
    {
       string userName;
       int age;
    
       // This is a positional argument.
       public NameAttribute (string userName) 
       { 
           this.userName = userName;
       }
       public string UserName 
       { 
          get 
          {
             return userName; 
          }
       }
       // This is a named argument.
       public int Age 
       { 
          get 
          {
             return age;
          }
          set 
          {
             age = value;
          }
       } 
    }
    

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

設計ガイドラインの詳細についてを参照してください、「フレームワークの設計ガイドライン。規則、慣用句、および再利用可能なパターン。ネット ライブラリ」本クシシュトフ Cwalina、ブラッド エイブラムス、アスキー、2005 年発表しました。

参照

概念

使用方法のガイドライン

その他の技術情報

クラス ライブラリ開発のデザイン ガイドライン