2010-02-10 2 views
0

J'ai une question: Y at-il une façon élégante d'obtenir des attributs sur un champ référencé. Ie .:Comment obtenir les attributs sur un champ référencé

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.

Répondre

0

Il n'y a aucun moyen que vous pouvez le faire avec la signature ref string field. Les attributs sont appliqués aux déclarations (champs, classes, événements, etc.), pas aux "instances".

Qu'est-ce que vous pouvez 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 sont les attributs appliqué au champ nommé fieldName. Cette approche, cependant, est extrêmement fragile et généralement très mauvaise.

Questions connexes