Combining multiple attributes in C#

26,853

Solution 1

There is no functional difference. It's a question of convenience and style.

Most often, I tend to see attributes on their own lines as a way to keep them separate and easy to read. It's also nice to be able to use the line comment // to remove attributes individually.

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

Solution 2

From a readability standpoint separate attributes are preferred.

Think about the case where you are passing some type of parameter

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

versus

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

I would also argue, if you could combine them into one, they should be one tag.

Solution 3

I typically stack attributes. But I also mainly use these with WCF where the parameter list can get pretty big.

[OperationContract()]
[WebGet(...)]
string MyMethod(string input);
Share:
26,853
Brant Bobby
Author by

Brant Bobby

Updated on July 25, 2020

Comments

  • Brant Bobby
    Brant Bobby almost 4 years

    Is there a functional difference between the following syntax...

    [Foo, Bar]
    public class Baz {}
    

    ...and this syntax?

    [Foo]
    [Bar]
    public class Baz {}
    

    Assuming each produces identical results when compiled, which is the preferred form?

  • Ken
    Ken about 14 years
    Also, because attributes tend to have longer names than A and B so lines can get pretty long if you put them all together!