C#Metro序列化一个类?

时间:2012-08-16 21:28:03

标签: c# class serialization file-io microsoft-metro

我在C#WPF .NET 4.0中编写游戏代码,但我一直在将它移植到WinRT作为Metro应用程序。

我无法弄清楚序列化。在我用[serializable()]标记一个类之前 并将其保存到磁盘。

到目前为止,我已经找到了DataContracts和xmlserialization,但是如何序列化一个类并将其写入磁盘?

我是否必须使用属性标记班级中的每个属性,请帮助

1 个答案:

答案 0 :(得分:1)

使用XmlSerializer,不,你没有 - 事实上,在许多情况下你不需要标记任何东西。但是,添加属性可以更好地控制最终的xml。

使用DataContractSerializer,当然首选添加[DataContract][DataMember]属性;你没有得到相同类型的控件,但效果很好。

两者的特征不同:

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

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