ReturnParameter's Name Eigenschaft eines RunTimemethodinfo -Objekts mit Reflection (C#) erhalten
-
27-10-2019 - |
Frage
Angenommen, ich habe die folgende Klasse 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;
}
}
Kann ich basierend auf der Reflexion den Namen des Feldes erhalten, das von getId () (und/oder) setID () Methode verwendet wird? (Falls [B_ID]) Ich kodiere ein Persistenz -Framework und es wäre nützlich, den Schlüsselnamen einer Tabelle zu identifizieren, die nach beiden oben genannten Methoden eingeschlossen ist.
Es scheint, dass die Eigenschaftseigenschaft von Runtimemethodinfo eine Eigenschaft namens Name hat, die mir dabei helfen sollte, aber es kommt null.
Um dieses Runtimemethodinfo -Objekt zu erhalten, erhalte ich Mitglieder einer Instanz der B -Klasse mit diesen BindingFlags Enums:
- BindingFlags.Public | BindingFlags.instance | BindingFlags.declaredonly
Wie kann ich diesen Feldnamen bekommen? Dieses Verhalten sollte mit Eigenschaften gleich sein.
Danke im Voraus
Lösung
Ich fürchte, das ist unmöglich, weil der Feldname der Teil des implementierten Codes ist und Reflexion keine Ahnung hat, wie er ihn abrufen soll. Persistente Frameworks verwenden normalerweise eine Art Mapping, um solche Informationen bereitzustellen. Beispielsweise können Sie eine XML -Datei verwenden oder über Ihre Felder übergießen, um sie als Schlüssel oder Spalten Ihrer Tabelle einzuführen: Etwas wie folgt:
[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;
}
}