Ottieni la proprietà del nome di ReturnParameter di un oggetto runtimethodinfo usando la riflessione (C#)

StackOverflow https://stackoverflow.com/questions/9352066

Domanda

Supponiamo di avere la seguente classe in 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;
    }
}

Sulla base della riflessione, posso ottenere il nome del campo utilizzato dal metodo getid () (e/o) setId ()? (Nel caso in cui [b_id]) Sto codificando un framework di persistenza e sarebbe utile identificare il nome chiave di una tabella, che è racchiuso da entrambi i metodi sopra.

Sembra che la proprietà di ReturnParameter di RuntimeMethodinfo abbia una proprietà chiamata nome che dovrebbe aiutarmi con questo, ma è NULL.

Per ottenere quell'oggetto runtimethodinfo, sto ricevendo membri di un'istanza di classe B usando questi Enums BindingFlags:

  • Bindingflags.public | Bindingflags.instance | Bindingflags.declaRedonly

Come posso ottenere questo nome sul campo? Questo comportamento dovrebbe essere lo stesso con le proprietà.

Grazie in anticipo

È stato utile?

Soluzione

Temo che sia impossibile perché il nome del campo è la parte del codice e la riflessione implementata non ha idea di come recuperarlo. I framework persistenti di solito usano una sorta di mappatura per fornire tali informazioni. Ad esempio è possibile utilizzare un file XML o è possibile utilizzare gli ATTRBUTE sui tuoi campi per introdurli come chiave o colonne della tabella qualcosa del genere:

[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;
        }
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top