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.

Était-ce utile?

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
scroll top