2011-06-29 49 views
1

与模型等..XmlSerialization,序列化的只有一个属性的子元素

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

我想要做的XML序列化,但在BaseChild对象,我只是想序列化Id财产。 Child对象的其余部分将被序列化到它自己的单独文件中。这可能不需要制作两组模型吗?

+0

即使这是可能的,你可以如何处理Base的反序列化? –

回答

1

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

如果您在不同的环境中需要不同的布局,那么您可以使用XmlAttributeOverrides在运行时定义模型,但这不是微不足道的。此外,如果这样做,你MUST缓存和重新使用得到XmlSerializer(有一个允许的重写一个构造函数),否则会泄漏动态组件(没有为琐碎typeof(SomeRoot)串行一个内置的缓存,但定制序列化程序不会自动缓存,并且每个程序集都会生成一个程序集;程序集不能被卸载())。

+0

XmlIgnore不是一个选项,因为I * do *仍然需要'Child'对象可序列化。 – Ciel

+0

@Ciel您是否看到了其他的帖子,我在其中详细解释了如何在单一模型中实现这一目标? –

+0

是的,对不起。我必须出城几天。谢谢。 – Ciel

1

您可以在所有其他属性上使用XmlIgnore属性。不知道这是否会得到你以后的结果。

相关问题