XmlSerialization,序列化的只有一个属性的子元素
问题描述:
与模型等..XmlSerialization,序列化的只有一个属性的子元素
class Base {
public Child Child { get; set; }
}
class Child {
public int Id { get; set; }
// other properties
}
我想要做的XML序列化,但在Base
的Child
对象,我只是想序列化Id
财产。 Child
对象的其余部分将被序列化到它自己的单独文件中。这可能不需要制作两组模型吗?
答
如果您只在Base
的上下文中序列化Child
,则可以使用[XmlIgnore]
标记其他成员,并且它们不会出现。
如果您在不同的环境中需要不同的布局,那么您可以使用XmlAttributeOverrides
在运行时定义模型,但这不是微不足道的。此外,如果这样做,你MUST缓存和重新使用得到XmlSerializer
(有一个允许的重写一个构造函数),否则会泄漏动态组件(没有为琐碎typeof(SomeRoot)
串行一个内置的缓存,但定制序列化程序不会自动缓存,并且每个程序集都会生成一个程序集;程序集不能被卸载())。
答
您可以在所有其他属性上使用XmlIgnore属性。不知道这是否会得到你以后的结果。
即使这是可能的,你可以如何处理Base的反序列化? –