2

我知道做什么ConditionalAttribute

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

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

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

4

1 回答 1

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,但它是密封的。相反,您需要装饰您的自定义属性。

于 2016-08-17T07:16:11.567 回答