7 votes

Comment obtenir la valeur des attributs

J'ai ce code :

[MyAttribute(CustomAttribute="Value")]
class MyClass
{
    // some code
}

Main()
{
    MyClass a = new MyClass();
}

Comment obtenir la valeur de CustomAttribute pour l'instance a ?

3voto

Adam Houldsworth Points 38632

Il y a un bon échantillon ici :

http://msdn.microsoft.com/en-us/library/z919e8tw.aspx

Pour effectuer cette opération sans foreach, vous devez supposer qu'aucun autre attribut n'est appliqué au type et indexer directement le premier attribut.

3voto

Jamiec Points 35773

Du genre :

MyAttribute [] myAttributes 
  = (MyAttribute [])a.GetType().GetCustomAttributes(typeof(MyAttribute),true);

Je ne comprends pas ce que vous voulez dire par "sans utiliser foreach", sauf que GetCustomAttributes renvoie toujours un tableau d'attributs (pour tenir compte de la présence de plusieurs attributs). Si vous savez qu'il ne peut y en avoir qu'un seul, alors utilisez simplement le premier.

MyAttribute theAttrib = myAttributes[0];
Console.WriteLine(theAttrib.CustomAttribute);

1voto

Tim Robinson Points 28696
var attribs = (MyAttributeAttribute[]) typeof(MyClass).GetCustomAttributes(
    typeof(MyAttributeAttribute), 
    true);

Console.WriteLine(attribs[0].CustomAttribute); // prints 'Value'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X