Объединение нескольких атрибутов в С#
Существует ли разница между следующим синтаксисом...
[Foo, Bar]
public class Baz {}
... и этот синтаксис?
[Foo]
[Bar]
public class Baz {}
Предполагая, что каждый из них производит идентичные результаты при компиляции, которая является предпочтительной формой?
Ответы
Ответ 1
Функциональной разницы нет. Это вопрос удобства и стиля.
Чаще всего я склонен видеть атрибуты на своих линиях как способ сохранить их в отдельности и легко читать. Также приятно использовать комментарий линии //
для удаления атрибутов по отдельности.
[A]
[B]
//[C] disabled
public class Foo {}
Ответ 2
С точки зрения удобочитаемости предпочтительны отдельные атрибуты.
Подумайте о том, где вы передаете некоторый тип параметра
[Foo(typeof(int)), Bar(typeof(decimal), MessageTemplate="Bar")]
против
[Foo(typeof(int))]
[Bar(typeof(decimal), MessageTemplate="Bar")
Я бы также утверждал, что если вы могли бы объединить их в один, они должны быть одним тегом.
Ответ 3
Я обычно складываю атрибуты. Но я также в основном использую их с WCF, где список параметров может быть довольно большим.
[OperationContract()]
[WebGet(...)]
string MyMethod(string input);