C# XmlSerialization,仅序列化子元素的一个属性

C# XmlSerialization,仅序列化子元素的一个属性,c#,xml-serialization,C#,Xml Serialization,使用一个模型,例如 class Base { public Child Child { get; set; } } class Child { public int Id { get; set; } // other properties } 我想进行Xml序列化,但是对于Base上的Child对象,我只想序列化Id属性。子对象的其余部分将被序列化到它自己的单独文件中。不制作两组模型就可以做到这一点吗?您可以在所有其他属性上使用XmlIgnore属性。不确定这是否会得到您想要的结果

使用一个模型,例如

class Base {
  public Child Child { get; set; }
}
class Child {
  public int Id { get; set; }
  // other properties
}

我想进行Xml序列化,但是对于
Base
上的
Child
对象,我只想序列化
Id
属性。子对象的其余部分将被序列化到它自己的单独文件中。不制作两组模型就可以做到这一点吗?

您可以在所有其他属性上使用XmlIgnore属性。不确定这是否会得到您想要的结果。

如果您仅在
Base
的上下文中序列化
Child
,则可以使用
[XmlIgnore]
标记其他成员,它们不会出现


如果您需要在不同的上下文中使用不同的布局,那么您可以在运行时使用
XmlAttributeOverrides
来定义模型,但这并不简单。此外,如果执行此操作,必须缓存并重新使用生成的
XmlSerializer
(有一个接受重写的ctor),否则它将泄漏动态程序集(有一个用于平凡的
类型的内置缓存(SomeRoot)
序列化程序,但自定义序列化程序不会自动缓存,并会生成每个程序集;无法卸载程序集).

即使这是可能的,您如何处理基对象的反序列化?XmlIgnore不是一个选项,因为我仍然需要
子对象可以序列化。@Ciel您看到我在文章的其余部分了吗?在那里,我非常详细地解释了如何在单个模型上实现这一点。是的,对不起。我不得不出城几天。非常感谢。