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

Есть ли между следующим синтаксисом функциональное различие...

[Foo, Bar]
public class Baz {}

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

[Foo]
[Bar]
public class Baz {}

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

34
задан Brant Bobby 15 September 2010 в 19:57
поделиться

3 ответа

Функциональной разницы нет. Это вопрос удобства и стиля.

Чаще всего я предпочитаю видеть атрибуты на своих собственных строках, чтобы они были разделены и легко читались. Также приятно иметь возможность использовать комментарий строки // для удаления атрибутов по отдельности.

[A]
[B]
//[C] disabled
public class Foo {} 
41
ответ дан 27 November 2019 в 16:55
поделиться

Я обычно складываю атрибуты. Но я также в основном использую их с WCF, где список параметров может стать довольно большим.

[OperationContract()]
[WebGet(...)]
string MyMethod(string input);
2
ответ дан 27 November 2019 в 16:55
поделиться

С точки зрения удобочитаемости предпочтительны отдельные атрибуты.

Подумайте о случае, когда вы передаете какой-то тип параметра

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

vs

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

Я бы также сказал, что если бы вы могли объединить их в один, они должны быть одним тегом.

11
ответ дан 27 November 2019 в 16:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: