アトリビュート
最終更新:
atachi
Conditional | [Conditional("DEBUG") | 引数の名前が#defineによって定義されている場合に有効になる。 |
DebuggerStepThrough | [DebuggerStepThrough] |
デバッガでステップインする必要が無いことを示す。 単純なロジックであったりデバッグ済みのロジックが含まれたメソッドにはこの属性をつける。 |
Obsolete | [Obsolete("use NewMethod")] | メソッドやフィールド、プロパティを使用することを推奨しないことを示す |
カスタムアトリビュートの作成
プログラマはフレームワークに定義されているアトリビュートの他に、プログラマ自身でアトリビュートを定義することができます。
定義したカスタムアノテーションはリフレクションによって実行時にチェックすることができます。
カスタムアトリビュートを定義するには、Attributeクラスを継承し、アトリビュートを定義するアトリビュートを指定します。
[AttributeUsage(AttributeTargets.Class)]
public class MyCustomAttribute : Attribute {
public string Name;
}
このように定義したカスタムアトリビュートは次のように使用できます。
[MyCustom(Name="何か文字列")]
public class MyClass {
...
}
カスタムアトリビュートの属性
カスタムアトリビュートの定義時に使用したAttributeUsage属性を使ってアトリビュートの属性を指定します。
- アトリビュートの指定先
-
AttributeTargets.Classはクラスに対して付与できるアトリビュートであることを示します。
指定先は複数設定することができそれぞれをOR結合で記述します。 - 同一アトリビュートの複数適応
- 「AllowMultiple=true」とすると同じ箇所に同じカスタムアトリビュートを複数記述できます。
- 継承
- アトリビュートを付与したクラスにサブクラスがあった場合、サブクラスにもアトリビュートを引き継がせるかどうかを指定します。
例えば、クラスにだけ指定可能としたアトリビュートを作成するには次のようになります。
[AttributeUsage(AttributeTargets.Class)]
public class ClassOnlyAttribute : Attribute {
}