在C#中组合多个属性

时间:2010-03-30 16:38:42

标签: c# syntax coding-style attributes

以下语法之间是否存在功能差异......

[Foo, Bar]
public class Baz {}

......还有这个语法?

[Foo]
[Bar]
public class Baz {}

假设编译时每个都产生相同的结果,这是首选形式?

3 个答案:

答案 0 :(得分:40)

没有功能差异。这是一个方便和风格的问题。

大多数情况下,我倾向于在自己的行上看到属性,以便将它们分开并易于阅读。能够使用行注释//分别删除属性也很不错。

[A]
[B]
//[C] disabled
public class Foo {} 

答案 1 :(得分:11)

从可读性的角度来看,优选单独的属性。

考虑一下您传递某种类型参数的情况

 [Foo(typeof(int)), Bar(typeof(decimal), MessageTemplate="Bar")]

 [Foo(typeof(int))]
 [Bar(typeof(decimal), MessageTemplate="Bar")]

我也会争辩说,如果你把它们组合成一个,它们应该是一个标签。

答案 2 :(得分:2)

我通常会堆叠属性。但是我也主要在WCF中使用它们,参数列表可以变得非常大。

[OperationContract()]
[WebGet(...)]
string MyMethod(string input);