Comment obtenir les attributs sur un champ référencé
-
19-09-2019 - |
Question
J'ai une question: Y at-il une façon élégante d'obtenir des attributs sur un champ référencé. À savoir:.
public class C1: Base
{
[MyAttribute]
public string Field1;
}
public class Base
{
private void Do(ref string field)
{
if (field has attributes)
DoSomething();
}
}
Comment puis-je obtenir les attributs d'un champ dans la méthode Do ()?
Merci d'avance.
La solution
Il n'y a aucun moyen que vous pouvez le faire avec la signature de ref string field
. Les attributs sont appliqués à des déclarations (champs, classes, événements, etc.), ne pas "instances".
Qu'est-ce que vous peut faire, est de modifier votre méthode comme ceci:
private void Do(Type fieldContainingType, string fieldName, ref string field)
puis utiliser la réflexion pour inspecter fieldContainingType
pour voir, quels attributs sont appliqués à champ nommé fieldName
. Cette approche, cependant, est extrêmement fragile et généralement très mauvais.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow