Подтвердить что ты не робот

Объединение нескольких атрибутов в С#

Существует ли разница между следующим синтаксисом...

[Foo, Bar]
public class Baz {}

... и этот синтаксис?

[Foo]
[Bar]
public class Baz {}

Предполагая, что каждый из них производит идентичные результаты при компиляции, которая является предпочтительной формой?

4b9b3361

Ответ 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);