Ottieni la proprietà del nome di ReturnParameter di un oggetto runtimethodinfo usando la riflessione (C#)
-
27-10-2019 - |
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
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;
}
}