Combinar múltiples atributos en C#
Hay una diferencia funcional entre la siguiente sintaxis...
[Foo, Bar]
public class Baz {}
...y esta sintaxis?
[Foo]
[Bar]
public class Baz {}
Suponiendo que cada uno produce resultados idénticos cuando se compila, ¿cuál es la forma preferida?
3 answers
No hay diferencia funcional. Es una cuestión de conveniencia y estilo.
Muy a menudo, tiendo a ver los atributos en sus propias líneas como una forma de mantenerlos separados y fáciles de leer. También es bueno poder usar la línea comment //
para eliminar atributos individualmente.
[A]
[B]
//[C] disabled
public class Foo {}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-30 16:43:27
Desde el punto de vista de la legibilidad se prefieren atributos separados.
Piense en el caso en el que está pasando algún tipo de parámetro
[Foo(typeof(int)), Bar(typeof(decimal), MessageTemplate="Bar")]
Versus
[Foo(typeof(int))]
[Bar(typeof(decimal), MessageTemplate="Bar")]
También argumentaría, si pudieras combinarlos en uno, deberían ser una etiqueta.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-24 13:27:17
Normalmente apilo atributos. Pero también los uso principalmente con WCF, donde la lista de parámetros puede ser bastante grande.
[OperationContract()]
[WebGet(...)]
string MyMethod(string input);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-30 16:42:48