Что ж, это очень старая проблема проектирования, с которой вы сталкиваетесь - в C # нет четкого решения этой проблемы.
Как правило, это решается путем обобщения дочерних свойств (как уже отмечалось всеми), что можетбыть утомительным - или б) разоблачить ребенка, что не всегда лучший способ.
Я бы не советовал размышлять, потому что вы не хотите этого делать на самом деле.Производительность в стороне (может не заметить, что в небольших приложениях, но если вы примете такой стиль кодирования, он скоро будет преследовать вас), это просто приводит к плохому дизайну, грязному коду и трудностям, например, вы не знаетегде и кто мог бы использовать отражение, чтобы изменить какую-то другую часть или получить доступ - вы не хотите делать это со своим «собственным кодом» (в данном случае), только обычно, если его принуждают, используя другой код - или в некоторыхситуации (не редкие, каждый больший фрагмент кода имеет своего рода отражение, но по уважительной причине), который гарантирует, что у вас нет другого способа сделать что-либо, например пересечь общий неуниверсальный мир, получить динамические свойства и т. д.
Сказав, что
вы можете изменить некоторые вещи, как правило, для достижения чего-то желаемого каким-либо другим способом.
Например, используя интерфейсы и косвенно обнажая ребенка - или перемещая вещи так, чтобы классвладеет свойствами находится в нужном месте «в цепочке», когда / где вам нужно использовать свойства.
т.е.это трудно объяснить - так как для этого нужен очень специфический сценарий, а затем очень конкретное решение - но обычно у вас всегда есть своего рода «выигрышный дизайн», который решает эти проблемы, и тот факт, что вы сталкиваетесь с такой проблемойобычно означает ..
1) вы, возможно, не организовали классы наилучшим образом для рассматриваемой проблемы, и вы вынуждены пытаться распространять свойства - вместо перераспределения обязанностей между классами,
2) или у вас просто такая ситуация, что другого пути нет:) ...
... надеюсь, это поможет некоторым