Nun, das ist das sehr alte Designproblem, vor dem Sie stehen - es gibt keine klare Lösung in C#.
Das wird normalerweise gelöst, indem Kindeigenschaften (wie bereits von allen angegeben) umhüllt werden, was mühsam sein kann - oder b) ein Kind aussetzen kann, was nicht oft der beste Weg ist.
Ich würde nicht die Reflexion vorschlagen, wie Sie das wirklich nicht wollen. Leistung beiseite (vielleicht nicht auf kleine apps, aber wenn Sie diese Art der Codierung übernehmen würde es zurück zu verfolgen Sie bald), das ist nur in einem schlechten Design, chaotisch Code und schwer zu folgen, z. Sie wissen nicht, wo und wer Reflektionen verwenden könnte, um einen anderen Teil zu ändern oder um darauf zuzugreifen - Sie möchten das nicht mit Ihrem eigenen Code tun (in diesem Fall), nur normalerweise, wenn Sie dazu gezwungen werden Code - oder in einigen Situationen (nicht selten, jeder größere Code-Code hat eine Art von Reflexion, aber aus einem guten Grund), die dies rechtfertigt, dh Sie haben keine andere Möglichkeit, Dinge zu tun, wie die generische nicht-generische Welt zu kreuzen, dynamische Eigenschaften usw. erhalten
Having gesagt,
Sie konnten einige Sachen gewöhnlich neu entwerfen, um etwas wünschenswertes auf eine andere Art zu erzielen.
Zum Beispiel durch Verwendung von Schnittstellen und indirektes Freilegen eines Kindes - oder Verschieben von Dingen, so dass die Klasse, der die Eigenschaften gehören, an der richtigen Stelle "in der Kette" ist, wenn/wo Sie Eigenschaften verwenden müssen.
Das ist schwer zu erklären - da dies ein sehr spezifisches Szenario erfordert und dann eine sehr spezifische Lösung -, aber normalerweise haben Sie immer ein 'gewinnendes Design', das diese Probleme und die Tatsache, dass Sie konfrontiert sind, löst ein solches Problem bedeutet normalerweise ..
1) Sie haben möglicherweise Klassen nicht auf die beste Weise für das vorliegende Problem organisiert, und Sie sind gezwungen zu versuchen, die Eigenschaften zu propagieren - anstatt die Verantwortlichkeiten zwischen den Klassen neu zu ordnen,
2) oder du hast einfach so eine Situation, dass es keinen anderen Weg gibt:) ... ... hoffe das hilft etwas
Fügen Sie einfach Eigenschaften zur übergeordneten Klasse hinzu, deren Getter die untergeordnete Eigenschaft zurückgibt. Das ist der richtige Weg, du musst darüber nachgedacht haben. Zu viele? Das Entlarven des Kindes ist der nicht so richtige Weg. –