私は何を知ってConditionalAttribute
います。
ドキュメントは、それがから派生している場合、クラスにも適用できると言いますAttribute
:
[Conditional("DEBUG")]
public class FooAttribute : Attribute { }
しかし、そのカスタム属性はどのように動作するのでしょうか? (リリースビルドから削除されていますか?)
私は何を知ってConditionalAttribute
います。
ドキュメントは、それがから派生している場合、クラスにも適用できると言いますAttribute
:
[Conditional("DEBUG")]
public class FooAttribute : Attribute { }
しかし、そのカスタム属性はどのように動作するのでしょうか? (リリースビルドから削除されていますか?)
@RicardoPontual のコメントは、私にアイデアを与えてくれました。
これは私がしました:
[Conditional("DEBUG")]
public class FooAttribute : Attribute { }
[Foo]
public class Bar { }
デバッグ モードでコンパイルし、DLL を ILSpy にロードしました (これは逆アセンブラーです)。予想通り、これは私が見つけたものです:
[Foo]
public class Bar { }
次に、リリース モードでコンパイルし、その DLL を ILSpy にロードしました。これは私が見つけたものです:
public class Bar { }
今回はBar
クラスは飾りませんでした!
したがって、答えは、カスタム属性を で装飾するとConditional
、その属性自体が同じように条件付きになるということです。
それが私が望んでいた動作です。最初は から派生したと思っていましConditionalAttribute
たが、封印されています。代わりに、カスタム属性を装飾する必要があります。