Lire la valeur d'un attribut d'une méthode
J'ai besoin d'être en mesure de lire la valeur de mon attribut de l'intérieur de ma Méthode, comment puis-je le faire?
[MyAttribute("Hello World")]
public void MyMethod()
{
//Need to read the MyAttribute attribute and get its value
}
- Il y a aussi la version générique (vous n'avez pas besoin de casting!) de ces méthodes mis en œuvre sous la forme d'extensions dans les plus récentes versions de .net (je pense qu'après 4.0), de sorte que les visiteurs, découvrez les réponses que les autres que l'on a accepté un
Vous devez vous connecter pour publier un commentaire.
Vous devez appeler la
GetCustomAttributes
fonction sur unMethodBase
objet.La façon la plus simple pour obtenir le
MethodBase
objet est d'appelerMethodBase.GetCurrentMethod
. (Notez que vous devez ajouter[MethodImpl(MethodImplOptions.NoInlining)]
)Par exemple:
Vous pouvez également obtenir le
MethodBase
manuellement, comme ceci: (Ce sera plus rapide)Disponibles réponses sont pour la plupart obsolètes.
C'est les meilleures pratiques en vigueur:
Il ne faut pas de casting et est assez sûr à utiliser.
Vous pouvez également utiliser
.GetCustomAttributes<T>
pour obtenir tous les attributs d'un type.nameof
est très agréable.Si vous stockez la valeur d'attribut par défaut dans une propriété (
Name
dans mon exemple) sur la construction, alors vous pouvez utiliser un Attribut static méthode d'assistance:Utilisation:
Ma solution est basée sur la valeur par défaut est défini sur l'attribut de la construction, comme ceci:
Dans le cas où vous êtes à la mise en œuvre du programme d'installation comme @Mikael Engver mentionné ci-dessus, et de permettre à de multiples usages. Voici ce que vous pouvez faire pour obtenir la liste de toutes les valeurs d'attribut.