使用诸如..的模型。
class Base {
public Child Child { get; set; }
}
class Child {
public int Id { get; set; }
// other properties
}
我想要进行Xml序列化,但对于Child
上的Base
对象,我只想序列化Id
属性。 Child
对象的其余部分将序列化为其自己的单独文件。没有制作两套模型可以做到这一点吗?
答案 0 :(得分:1)
您可以在所有其他属性上使用XmlIgnore属性。不确定这是否会得到你想要的结果。
答案 1 :(得分:1)
如果您仅在Child
的上下文中序列化Base
,则可以使用[XmlIgnore]
标记其他成员,但不会显示这些成员。
如果在不同的上下文中需要不同的布局,那么可以使用XmlAttributeOverrides
在运行时定义模型,但这并非易事。此外,如果这样做,你 必须 缓存并重新使用生成的XmlSerializer
(有一个接受覆盖的ctor),否则它将泄漏动态程序集(对于简单的typeof(SomeRoot)
序列化程序,有一个内置缓存,但自定义序列化程序不会自动缓存,并且每个都会生成一个程序集;无法卸载程序集 。