2012-02-19 2 views
2

Supposons que j'ai la classe suivante en C#:Obtenir la propriété Nom de ReturnParameter d'un objet RuntimeMethodInfo utilisant la réflexion (C#)

public class B : A 
{ 
    public Int32 B_ID; 
    public String B_Value; 

    public Int32 getID() 
    { 
     return B_ID; 
    } 

    public void setID(Int32 value) 
    { 
     B_ID = value; 
    } 
} 

basé sur la réflexion, puis-je obtenir le nom du champ utilisé par getID() (et/ou) la méthode setID()? (dans le cas, [B_ID]) Je suis en train de coder un cadre de persistance et il serait utile d'identifier le nom de clé d'une table, qui est encadrée par les deux méthodes ci-dessus.

Il semble que la propriété ReturnParameter de RuntimeMethodInfo possède une propriété nommée Name qui devrait m'aider avec ceci, mais elle est null.

Pour obtenir cet objet RuntimeMethodInfo, je suis en train de membres d'une instance de la classe B en utilisant ce BindingFlags énumérations:

  • BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly

Comment puis-je obtenir ce nom de champ? Ce comportement devrait être le même avec les propriétés.

Merci à l'avance

Répondre

2

Je crains que c'est impossible parce que le nom de domaine est la partie du code mis en œuvre et de réflexion n'a pas la moindre idée comment le récupérer. cadres persistants utilisent généralement une sorte de cartographie de fournir un tel information.For exemple, vous pouvez utiliser un fichier xml ou vous pouvez utiliser attirbutes sur vos champs pour les présenter comme clé ou colonnes de votre quelque chose comme table ceci:

[Table(name="MyTable")]  
public class B : A 
    { 

[Key(column_name="id")]  
public Int32 B_ID; 
     public String B_Value; 

     public Int32 getID() 
     { 
      return B_ID; 
     } 

     public void setID(Int32 value) 
     { 
      B_ID = value; 
     } 
    } 
+0

Tout d'abord, merci pour la réponse, c'était si utile pour moi. Désolé pour ma réponse tardive, j'ai trop travaillé sur cette question jusqu'à ce que vous me montriez le moyen le plus simple en utilisant les attributs personnalisés. Sur cette base, ces méthodes getID et setID ne sont plus nécessaires. +1 – rsfurlan90

Questions connexes