Reflections ! Properties die mit "new" überschrieben wurden!
-
Hallo Leute,
wie sehen die BindingFlags aus, damit ich nur die hierachie Höchsten Properties bekomme, die in den superklassen teiweile mit "new" declariert sind!?
mit :
var propertieInfos = value.GetType().GetProperties( System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) .ToArray();
bekomm ich "doppelte" Properties mit den gleichen Namen, will aber nur das höchst mit "new" überschriebe Property
grüße und danke
-
DeclaredOnly?
-
"new" macht ne neue Property, die Liste wäre also unvollständig wenn man "new" Properties mit dem selben Namen weglassen würde.
=> Ich vermute mal es gibt keine fertige Funktion die dir das liefert was du willst.@Mechanics
DeclaredOnly liefert auch keine Member aus Basisklassen die nicht in der abgeleiteten Klasse "verdeckt" werden.
Also vermutlich nicht das was NullBockException will.
-
Hallo,
dazu dienen die Eigenschaft MethodBase.IsHideBySig sowie das Flag NewSlot (s. MethodAttributes Enumeration).
Aufgeschlüsselt ist dies genauer in der Antwort unter How does reflection tell me when a property is hiding an inherited member with the 'new' keyword?.
Man muß also beachten, daß es Unterschiede zwischen non-virtual und virtual Überschreibungen mittels new gibt.
-
Ok vielen dank Jungs,
dann schau ich mir das mal an:)
Wichtig ist, dass ich beim reflection der gesamten Ableitungshierachie eindeutige Propertynamen habe bzw. immer die höchst mit "new" überschrieben zurück bekomme!!
Grüße:)