c# - 属性上的 ConditionalAttribute 有什么作用?

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

我知道ConditionalAttribute 的作用。

文档说它也可以应用于类,如果它是从 Attribute 派生的:

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

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

最佳答案

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

我这样做了:

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

[Foo]
public class Bar { }

我在 Debug模式下编译,并在ILSpy(它是一个反汇编器)中加载DLL。正如我所料,这是我发现的:

[Foo]
public class Bar { }

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

public class Bar { }

这次没有修饰Bar类!

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

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

关于c# - 属性上的 ConditionalAttribute 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38982444/

相关文章:

c# - 是否可以使用 C# 中的 Format-Table?

php - 在 Magento 中以编程方式更新/编辑属性选项

c# - 奇怪的属性错误

attributes - AllowMultiple不能与属性属性一起使用?

c# - 创建一个匿名类型的数组

c# - 自动对类执行操作且仅执行一次的方法

c# - 如何对类型列表集合进行排序

java - 如何停止 XmlSerializer 将 ê 转换为 ê在一个属性?

C# Strongly Typed Attribute 成员来描述属性

c# - 覆盖子类中继承的类属性