C#AttributeUsageの基礎
AttributeUsage クラスは、カスタム属性の使用規則を指定するための特性クラスです。AttributeUsage 特性を活用することで、カスタム属性をクラスやメソッド、フィールドなどの特定のプログラム要素にのみ適用できます。
AttributeUsage属性には3つのパラメータがあります。
- ValidOn:カスタム属性が適用できるプログラム要素のタイプです。複数のパラメーター値を組み合わせて使用できます。よく使われるパラメーター値は次のとおりです。AttributeTargets.Assembly(アセンブリ)、AttributeTargets.Class(クラス)、AttributeTargets.Method(メソッド)、AttributeTargets.Property(プロパティ)、AttributeTargets.Field(フィールド)など。
- AllowMultiple: カスタム属性を同じプログラム要素に複数回適用可能にするかどうかを指定します。 true の場合、複数回適用できます。 false の場合、1 回のみ適用できます。 デフォルト値は false です。
- 継承可能:カスタムプロパティが継承できるかどうかを指定します。 trueを設定すると、サブクラスは親クラスのプロパティを継承します。 falseを設定すると、サブクラスは親クラスのプロパティを継承しません。 デフォルト値はtrueです。
サンプルコードを示します。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class CustomAttribute : Attribute
{
// 自定义属性的代码逻辑
}
[Custom] // 只能应用于类和方法
public class MyClass
{
[Custom] // 只能应用于类和方法
public void MyMethod()
{
// 方法的代码逻辑
}
}
上記の例では、CustomAttributeをクラスとメソッドにしか適用できず、複数回は適用できません。また、子クラスに引き継がれます。そのため、MyClassクラスとMyMethodメソッドの両方にCustomAttributeを適用できます。