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

锋利的牙齿

我研究了ConditionalAttribute声明,声明如下:

我发现了这样的JavaScript代码:

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

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

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

但是编译器发出以下错误

错误CS1689:属性'System.Diagnostics.ConditionalAttribute'仅对方法或属性类有效

和MSDN说

仅在ConditionalAttribute属性发生此错误。消息指出,此属性只能在方法或属性类上使用。例如,尝试将此属性应用于类将产生此错误。

因此,似乎有一个声明为适用于类的属性,但是尝试将其应用于类会导致编译错误。

这怎么可能?那是一些硬性联系的特殊情况还是什么?

马克·格雷韦尔

是的,这ConditionalAttribute是一种特殊情况,它是编译器直接直接处理的少数几个属性之一。

在这种情况下,编译器将没有明确定义的行为,因此它选择不让您这样做,以免造成混淆。

当然,从技术上讲,您可以在MSIL中编写一个标记为的非属性类,使用进行ConditionalAttribute编译,ilasm然后从C#项目中引用它-知道C#编译器的功能将非常有趣...我除非个别方法也有该方法,否则它不会做任何特别的事情,因为这是它针对的场景。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我不能在从HashMap获得的对象上使用其他类的公共方法?

来自分类Dev

为什么我的别名不能在ssh上使用?

来自分类Dev

为什么我不能在 DataFrame 上使用 sort 或 orderby?

来自分类Dev

为什么我不能在泛型类上静态引用内部类的静态方法?

来自分类Dev

为什么我不能在用具体类型替换接口的类上实现接口?

来自分类Dev

为什么我不能在 Pycharm 上运行我的文件?

来自分类Dev

为什么我不能在Python中更改类的属性

来自分类Dev

为什么我不能在Integer类中覆盖self?

来自分类Dev

为什么我不能在类中放置 switch 语句

来自分类Dev

为什么不能在类的实例上设置属性?

来自分类Dev

为什么不能在类的实例上设置属性?

来自分类Dev

为什么我不能在std :: vector中使用抽象类?

来自分类Dev

为什么我们不能在WCF中使用抽象类而不是接口?

来自分类Dev

为什么我不能在类中使用参数构造函数?

来自分类Dev

为什么我不能在aspx.cs文件中使用c#类?

来自分类Dev

为什么我不能在子类中使用超类的属性(Objective-C)

来自分类Dev

为什么我们不能在扩展类的静态方法中使用此实例?

来自分类Dev

为什么我不能在 TestNg 类中使用 Page Factory

来自分类Dev

在Java中,为什么不能在泛型类上使用构造函数?

来自分类Dev

为什么我不能在桌子上继承父母的宽度?

来自分类Dev

为什么我的测试不能在MySQL上运行?

来自分类Dev

为什么我不能在Mac上正确安装ImageMagick?

来自分类Dev

为什么我不能在Ubuntu 12.04上编译GLIBC?

来自分类Dev

为什么我不能在Mac上安装任何gem?

来自分类Dev

为什么我不能在图像的画布上绘画?

来自分类Dev

为什么我的冻结期货不能在单核上运行?

来自分类Dev

为什么我的flask命令不能在Heroku上运行?

来自分类Dev

为什么我不能在Linux上终止此过程?

来自分类Dev

为什么我不能在Ubuntu 12.04上编译GLIBC?

Related 相关文章

  1. 1

    为什么我不能在从HashMap获得的对象上使用其他类的公共方法?

  2. 2

    为什么我的别名不能在ssh上使用?

  3. 3

    为什么我不能在 DataFrame 上使用 sort 或 orderby?

  4. 4

    为什么我不能在泛型类上静态引用内部类的静态方法?

  5. 5

    为什么我不能在用具体类型替换接口的类上实现接口?

  6. 6

    为什么我不能在 Pycharm 上运行我的文件?

  7. 7

    为什么我不能在Python中更改类的属性

  8. 8

    为什么我不能在Integer类中覆盖self?

  9. 9

    为什么我不能在类中放置 switch 语句

  10. 10

    为什么不能在类的实例上设置属性?

  11. 11

    为什么不能在类的实例上设置属性?

  12. 12

    为什么我不能在std :: vector中使用抽象类?

  13. 13

    为什么我们不能在WCF中使用抽象类而不是接口?

  14. 14

    为什么我不能在类中使用参数构造函数?

  15. 15

    为什么我不能在aspx.cs文件中使用c#类?

  16. 16

    为什么我不能在子类中使用超类的属性(Objective-C)

  17. 17

    为什么我们不能在扩展类的静态方法中使用此实例?

  18. 18

    为什么我不能在 TestNg 类中使用 Page Factory

  19. 19

    在Java中,为什么不能在泛型类上使用构造函数?

  20. 20

    为什么我不能在桌子上继承父母的宽度?

  21. 21

    为什么我的测试不能在MySQL上运行?

  22. 22

    为什么我不能在Mac上正确安装ImageMagick?

  23. 23

    为什么我不能在Ubuntu 12.04上编译GLIBC?

  24. 24

    为什么我不能在Mac上安装任何gem?

  25. 25

    为什么我不能在图像的画布上绘画?

  26. 26

    为什么我的冻结期货不能在单核上运行?

  27. 27

    为什么我的flask命令不能在Heroku上运行?

  28. 28

    为什么我不能在Linux上终止此过程?

  29. 29

    为什么我不能在Ubuntu 12.04上编译GLIBC?

热门标签

归档