3

I was coding a game in C# WPF .NET 4.0 but I've been in the process of porting it to WinRT to be a Metro app.

I can't figure out serialization. Before I would mark a class with [serializable()] and save it to disk.

So far I've found DataContracts and xmlserialization, but how do I serialize a class and write it to disk?

Do I have to mark every property in the class with an attribute, please help

4

1 回答 1

1

使用XmlSerializer,不,你不需要 - 事实上,在很多情况下你不需要标记任何东西。不过,添加属性允许对最终 xml 进行更多控制。

有了DataContractSerializer,当然首选添加[DataContract][DataMember]属性;你没有得到相同类型的控制,但它工作得很好。

两者的特点是不同的:

  • DCS 不使用构造函数 - XS 使用公共无参数构造函数
  • DCS 支持序列化回调(XS 不支持)
  • XS 支持条件序列化(DCS 不支持)
  • ETC

您可能还想考虑 protobuf-net,它最近支持 WinRT,输出更小速度比其他两个快得多(使用新的预编译器时);它支持 DCS 和 XS 组合的几乎所有功能和选项,但具有快速的二进制、跨平台输出。

于 2012-08-16T21:40:12.150 回答