宣言を調べたところ、次のようにConditionalAttribute
宣言されています。
次のような JavaScript コードを見つけました。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method,
AllowMultiple = true)]
public sealed class ConditionalAttribute : Attribute {
//whatever
}
属性をクラスに適用できることを意味するとAttributeTargets.Class
主張されています。だから私はこれを試しました:
[Conditional("DEBUG")]
class MyClass
{
}
しかし、コンパイラは次のエラーを出力します
エラー CS1689: 属性 'System.Diagnostics.ConditionalAttribute' はメソッドまたは属性クラスでのみ有効です
そしてMSDNは言う
このエラーは、ConditionalAttribute 属性でのみ発生します。メッセージにあるように、この属性はメソッドまたは属性クラスでのみ使用できます。たとえば、この属性をクラスに適用しようとすると、このエラーが発生します。
クラスに適用可能であると宣言された属性があるように見えますが、それをクラスに適用しようとすると、コンパイル エラーが発生します。
これはどのように可能ですか?それはハードワイヤードの特別なケースですか、それとも何ですか?