2009年的.NET XML序列化

Jak*_*urc 1 .net xml-serialization

可能重复:
XML序列化的替换

除了旧的XmlSerializer在.Net Universe中的xml序列化世界中有什么新东西吗?

更新:这可能是更好问题的重复.

Tho*_*rin 7

DataContractSerializer的

例如,它默认由WCF使用.请参阅此处进行比较.

就个人而言,我讨厌XmlSerializer不能做内部类型.DataContractSerializer没有这个问题.而且,DataContractSerializer例如,使用泛型更容易.如果要生成人类可编辑的XML格式,则可能不太理想.

正如Maxim指出的那样,它的DataContractSerializer行为与您的预期略有不同:它不会调用任何构造函数来反序列化您的对象.如果由于某种原因需要进行一些初始化,可以使用该[OnDeserializing]属性.我使用这样的模式:

[DataContract]
public MyClass
{
    public MyClass()
    {
        Initialize();
    }

    [OnDeserializing]
    private OnDeserializing(StreamingContext context)
    {
        Initialize();
    }

    private void Initialize()
    {
        // Do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

同样,还有一个[OnDeserialized]属性和序列化版本.