Stellen Sie sich Folgendes vor
Ein Typ T hat ein Feld Firma. Bei der Ausführung der folgenden Methode funktioniert es einwandfrei:
Type t = typeof(T);
t.GetProperty("Company")
Mit dem folgenden Aufruf bekomme ich allerdings null
Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)
Hat jemand eine Idee?
c#
reflection
getproperty
bindingflags
Boris Callens
quelle
quelle
Antworten:
Sie haben die Standard-Lookup-Flags überschrieben. Wenn Sie neue Flags angeben, müssen Sie alle Informationen angeben, damit die Eigenschaft gefunden werden kann. Beispielsweise:
BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance
quelle
BindingFlags
, gibt es keine Möglichkeit, die Standardeinstellungen nicht zu verwenden. Dh es wäre nicht möglich,Public
Eigenschaften auszuschließen oderInstance
Eigenschaften auszuschließen . Sie haben entschieden, dass Sie entweder die Standardeinstellungen übernehmen oder sie überschreiben, indem Sie genau angeben, wonach Sie suchen.Sie müssen hinzufügen
BindingFlags.Public | BindingFlags.Instance
quelle
Danke, das hat mir heute zur Not wirklich geholfen. Ich hatte Audit-Informationen gespeichert, aber mit falschem Gehäuse auf den Eigenschaftsnamen. (Die Prüfung ist in eine Datenschicht integriert.) Wie auch immer, ich musste IgnoreCase als Bindungsflag hinzufügen, aber dann funktionierte es immer noch nicht, bis mein Kollege diese Antwort fand. Die resultierende Funktion:
Dies ist Teil einer Klasse, die ich DotMagic nenne.
quelle