c# - 为什么我不能在类上使用 ConditionalAttribute?

标签 c# .net attributes conditional-attribute

我查看了 ConditionalAttribute 声明,它是这样声明的:

我发现 JavaScript 代码是这样的:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method,
   AllowMultiple = true)]
public sealed class ConditionalAttribute : Attribute {
  //whatever
}

AttributeTargets.Class 声称意味着 Attribute 可以应用于类。 所以我尝试了这个:

[Conditional("DEBUG")]
class MyClass
{
}

但是编译器报错

error CS1689: Attribute 'System.Diagnostics.ConditionalAttribute' is only valid on methods or attribute classes

MSDN 说

This error only occurs with the ConditionalAttribute attribute. As the message states, this attribute can only be used on methods or attribute classes. For example, trying to apply this attribute to a class will generate this error.

所以看起来有一个属性声明适用于一个类,但试图将它应用到一个类会导致编译错误。

这怎么可能?那是一些硬连线的特殊情况还是什么?

最佳答案

好的:

[Conditional("DEBUG")]
public void foo() { }

也可以:

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

不好:

[Conditional("DEBUG")]
public class Baz { }

ConditionalAttribute 可以应用于类,但是附加限制类是属性类

如果你想根据条件定义删除整个类,那么不,你不能这样做。它不受支持。您必须单独标记每个方法。

关于c# - 为什么我不能在类上使用 ConditionalAttribute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21934903/

相关文章:

python - Python 中检查对象属性是否分配了 DataFrame 的最有效方法?

c# - 方法参数的属性

c# - Visual Studio 调试器 - 有什么方法可以通过调试器访问编译器生成的临时变量?

.net - VB.Net 使用创建表查询将 MS Access 表中的 AllowZeroLength 属性设置为“否”

asp.net - 如何识别谁在调用我的网络服务?

c# - 将并发字典保存线程不安全的集合是否需要在C#中锁定

c# - 使用 TypeForwardedToAttribute 的正确方法是什么?

c# - C#中的组合算法

c# - 在 SQL Server 中插入运行时间

c# - 检测月历中更改的月份 C#