Combinare più attributi in C #

Esiste una differenza funzionale tra la seguente syntax …

[Foo, Bar] public class Baz {} 

… e questa syntax?

 [Foo] [Bar] public class Baz {} 

Supponendo che ognuno produca risultati identici una volta compilato, qual è la forma preferita?

Non c’è differenza funzionale. È una questione di convenienza e stile.

Molto spesso, tendo a vedere gli attributi sulle loro linee come un modo per tenerli separati e facili da leggere. È anche bello poter usare il commento di linea // per rimuovere gli attributi individualmente.

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

Da un punto di vista della leggibilità sono preferiti gli attributi separati.

Pensa al caso in cui stai passando qualche tipo di parametro

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

contro

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

Vorrei anche discutere, se potessi combinarli in uno, dovrebbero essere un tag.

In genere impilare gli attributi. Ma li uso principalmente anche con WCF, dove l’elenco dei parametri può diventare piuttosto grande.

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