Frage

Stellen Sie sich das folgende

Ein Typ T hat ein Feld Company. Wenn Sie die folgende Methode ausführen es funktioniert perfekt:

Type t = typeof(T);
t.GetProperty("Company")

Whith folgender Aufruf ich null bekommen, obwohl

Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)

Hat jemand eine Idee?

War es hilfreich?

Lösung

Sie haben den Standard Look-Up-Flags überschreiben, wenn Sie neue Flags geben Sie alle Informationen zur Verfügung stellen müssen, so dass das Objekt gefunden werden kann. Zum Beispiel: BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance

Andere Tipps

Sie müssen BindingFlags.Public | BindingFlags.Instance hinzufügen

Danke, das hat mir wirklich geholfen heute in einer Prise aus. Ich hatte Audit-Informationen gespeichert, aber mit falschen Gehäuse auf den Eigenschaftsnamen. (Die Prüfung wird in ein Datalayer gebaut.) Wie dem auch sei, so hatte ich IgnoreCase als Bindungsflag hinzufügen, aber dann immer noch nicht funktioniert hat, bis meine Mitarbeiter diese Antwort gefunden. Die resultierende Funktion:

public static void SetProperty(Object R, string propertyName, object value)
{
    Type type = R.GetType();
    object result;
    result = type.InvokeMember(
        propertyName, 
        BindingFlags.SetProperty | 
        BindingFlags.IgnoreCase | 
        BindingFlags.Public | 
        BindingFlags.Instance, 
        null, 
        R, 
        new object[] { value });
}

Dies ist Teil einer Klasse I DotMagic nennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top