次の構文の間に機能的な違いはありますか...
[Foo, Bar]
public class Baz {}
...そしてこの構文?
[Foo]
[Bar]
public class Baz {}
コンパイル時にそれぞれが同じ結果を生成すると仮定すると、どちらが推奨される形式ですか?
機能的な違いはありません。利便性とスタイルの問題です。
ほとんどの場合、私は属性を分離して読みやすくする方法として、自分の行の属性を見る傾向があります。行コメント//
を使用して属性を個別に削除できるのも便利です。
[A]
[B]
//[C] disabled
public class Foo {}
読みやすさの観点から、個別の属性が推奨されます。
あるタイプのパラメーターを渡す場合を考えてください。
[Foo(typeof(int)), Bar(typeof(decimal), MessageTemplate="Bar")]
versus
[Foo(typeof(int))]
[Bar(typeof(decimal), MessageTemplate="Bar")]
また、それらを1つに組み合わせることができれば、1つのタグにする必要があると主張します。
私は通常、属性をスタックします。しかし、私は主に、パラメータリストがかなり大きくなる可能性があるWCFでこれらを使用します。
[OperationContract()]
[WebGet(...)]
string MyMethod(string input);