属性上的 ConditionalAttribute 有什么作用?

What does ConditionalAttribute on an Attribute do?

我知道 ConditionalAttribute 的作用。

文档说它也可以应用于 class,如果它来自 Attribute:

[Conditional("DEBUG")]
public class FooAttribute : Attribute { }

但是该自定义属性的行为如何?(它是否从发布版本中删除?)

@RicardoPontual 的评论给了我一个想法。

我这样做了:

[Conditional("DEBUG")]
public class FooAttribute : Attribute { }

[Foo]
public class Bar { }

我在 调试模式下编译 ,并在 ILSpy(它是一个反汇编程序)中加载 DLL。正如预期的那样,这是我发现的:

[Foo]
public class Bar { }

然后我在 发布模式 下编译,并在 ILSpy 中加载该 DLL。这是我发现的:

public class Bar { }

Barclass这次没有装修!

所以,答案是,当您用 Conditional 修饰某些自定义属性时,该属性本身将以相同的方式成为条件。

这就是我想要的行为。我最初想从 ConditionalAttribute 派生,但它是密封的。相反,您需要装饰您的自定义属性。