C#解决XmlSerializer.Deserialize陷阱?

时间:2008-11-22 19:17:20

标签: c# xml serialization

我只是想知道使用XmlSerializer.Deserialize()反序列化私有字段/属性是否有任何好的解决方法?

目前,我将XML反序列化为具有所有公共属性的简单一次性类型,然后我加载具有如下私有属性的复杂类型:

ComplexType complex = new ComplexType(SimpleType);

并且ComplexType的构造函数如下所示:

public ComplexType(SimpleType simpleType){
    this.Property1 = simpleType.Property1;
    this.Property2 = simpleType.Property2;
    .....

}

任何人都有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以让ComplexType实现IXmlSerializable接口。这暴露了序列化和反序列化的方法,因此您可以在这些方法中填充complextype的私有成员。

在这里查看MSDN:http://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable.aspx以获取一个示例,该示例显示了序列化私有字段的IXmlSerializable接口的实现。

答案 1 :(得分:1)

请注意,另一个选项是使用DataContractSerializer(.NET 3.0) - 这支持私有成员(属性或字段)的序列化。