2010-06-16 226 views
5

可以将属性应用于c#中的静态类,方法或属性?像:在C#中,属性可以应用于静态类,方法或属性吗?

[MyAttribute] 
public static MyMethods(string str) ... 
+7

似乎是一件容易的事情去尝试自己....你有没有尝试过,失败? – 2010-06-16 05:35:36

+0

难道不是'[我]'吗? – Kobi 2010-06-16 05:38:14

+0

我重复Jason Webb的评论:你为什么不自己试试这个呢? – abelenky 2010-06-16 05:39:19

回答

6

实际上有两个问题在这里

是否有可能在一般属性应用于类,方法的或属性?

是属性可以有效地针对任何这些结构(以及其他许多)

的有效期是一个特定的属性,这样做呢?

这取决于具体的属性。属性可以控制哪些构造可以通过枚举来应用,因此将特定属性应用于特定构造是非法的。

例如,ParamArrayAttribute只能定位参数,而ObsoleteAttribute可以针对几乎任何东西(除了组件也许有其他的我失踪)

+0

恭喜100k; p – 2010-06-16 09:49:54

+0

@Marc谢谢!现在为200 :) – JaredPar 2010-06-16 14:48:13

+0

但是,即使'AttributeTarget'也不能在* static *项上使属性无效,而在* non-static *项上有效。 – Timwi 2010-09-05 17:23:55

1

是的。大概。试试看。

我想知道为什么你会怀疑它。

2

是的,你可以将属性应用于静态类,方法,属性。

例如:

[MyAttribute("hello")] 
     public static string SayHello(string str) 
     { 
     return str; 
     } 
1

是的,它可以被应用。

0

这取决于属性是否可以应用到一个静态类。退房AttributeTarget。因此,它是完全合法的,并允许用一个或多个静态类来修饰属性。