Xml序列化,仅序列化子元素的一个属性

时间:2011-06-29 17:53:56

标签: c# xml-serialization

使用诸如..的模型。

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

我想要进行Xml序列化,但对于Child上的Base对象,我只想序列化Id属性。 Child对象的其余部分将序列化为其自己的单独文件。没有制作两套模型可以做到这一点吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如果您仅在Child的上下文中序列化Base,则可以使用[XmlIgnore]标记其他成员,但不会显示这些成员。

如果在不同的上下文中需要不同的布局,那么可以使用XmlAttributeOverrides在运行时定义模型,但这并非易事。此外,如果这样做,你 必须 缓存并重新使用生成的XmlSerializer(有一个接受覆盖的ctor),否则它将泄漏动态程序集(对于简单的typeof(SomeRoot)序列化程序,有一个内置缓存,但自定义序列化程序不会自动缓存,并且每个都会生成一个程序集;无法卸载程序集