BindingFlags.IgnoreCase nicht für Type.GetProperty Arbeit ()?
-
06-07-2019 - |
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?
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.