属性上的ConditionalAttribute做什么?

时间:2016-08-16 18:52:46

标签: c# attributes custom-attributes release-builds debug-build

我知道ConditionalAttribute做了什么。

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

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

但是该自定义属性的行为如何?(是否从发布版本中剥离了?)

1 个答案:

答案 0 :(得分:2)

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

我这样做了:

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

[Foo]
public class Bar { }

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

[Foo]
public class Bar { }

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

public class Bar { }

这次没有装饰Bar课程!

所以,答案是当你用Conditional装饰一些自定义属性时,那个属性本身就会以同样的方式变为条件。

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