Nehmen wir an, es gibt eine Klasse mit einer virtuellen Eigenschaft (nennen wir es 'P'). Es wird in einer abgeleiteten Klasse überschrieben. Jetzt möchte ich etwas wie dieses verwenden: obj.GetType().GetProperty("P")
, um Informationen über die überschreibende Eigenschaft zu erhalten. Diese Suche ist zweideutig, da es zwei "P" -Eigenschaften (Basis und Überschreibung) gibt. Also tippte ich: obj.GetType().GetProperty("P", BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance)
Reflektierende abgeleitete Klassen in C#
Es gibt nur das überschreibende "P" zurück, aber was ist, wenn ich in der Kompilierzeit nicht erraten kann, wenn es überhaupt eine Überschreibung gibt? Letzterer Aufruf würde null zurückgeben. Der Fall ist noch komplizierter, wenn die Hierarchie der Vererbung größer ist.
Mit anderen Worten, ich möchte die "oberste" Überschreibung verfügbar, sonst - die Basis-Eigenschaft. Was ist der sauberste Weg, um das Ziel zu erreichen? Ich weiß im Moment nur, dass ich alle Eigenschaften durchgehen und den Namen und den Typ prüfen muss.
Ja, das war es, was ich brauchte, um die Dinge funktionieren zu lassen. Die von Ihnen angegebene Beispielverwendung entspricht genau der Vorgehensweise. Vielen Dank! – pbalaga