ReturnParameter's Name Eigenschaft eines RunTimemethodinfo -Objekts mit Reflection (C#) erhalten

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

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

War es hilfreich?

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;
        }
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top