Les attributs sont des méta-données. En règle générale, vous voulez décorer un membre ou taper un attribut afin de suivre certaines informations à ce sujet.
Par exemple, le DescriptionAttribute est utilisé par PropertyGrid pour étiqueter une description d'une propriété:
[Description("This is my property")]
public int MyProperty { get; set; }
La plupart du temps, ayant plus d'une seule description ne serait pas logique.
Cependant, il est possible qu'un attribut spécifique ait un sens à utiliser plusieurs fois. Dans ce cas, vous devez définir l'attribut pour autoriser plusieurs instances de lui-même associées au même attribut.
(Ce n'est pas ce que je ferais, mais ...) Dites que vous avez créé un attribut personnalisé pour suivre les modifications majeures apportées à une classe. Vous pouvez inscrire sur la liste pour chaque changement majeur:
[Changes(Version=1.1, Change="Added Foo Feature")]
[Changes(Version=2.0, Change="Added Bar Feature")]
public class MyClass
{
// ...
Pour construire sur votre exemple de description et éviter l'exemple "Je ne ferais pas cela" Modifications, considérons un LocalisedDescriptionAttribute, qui a à la fois une locale et une description. Cela pourrait être appliqué plusieurs fois pour des locales différentes: '[LocalisedDescription (" en-NZ "," sweet as ")] [LocalisedDescription (" en-GB "," jolly good ")]'. – itowlson
Beaucoup mieux formulé que ma réponse :) –
@itowlson: Oui, bien que, encore une fois, j'utiliserais probablement les options de localisation standard ... Ce serait un autre bon exemple, cependant. –