Если вы сериализуете Child
только в контексте Base
, вы можете пометить других участников [XmlIgnore]
, и они не будут отображаться.
Если вам нужен другой макет в разных контекстах, вы можете использовать XmlAttributeOverrides
для определения модели во время выполнения, но это не тривиально. Кроме того, если вы сделаете это, вы ДОЛЖНЫ кешировать и повторно использовать полученный XmlSerializer
(есть ctor, который принимает переопределения), или он будет пропускать динамические сборки (есть встроенный кеш для тривиальных сериализаторов typeof(SomeRoot)
, но пользовательские сериализаторы не кэшируются автоматически и генерируют сборку для каждой; сборки не могут быть выгружены .