Silverlight 4和System.Runtime.Serialization

时间:2011-09-01 04:41:47

标签: serialization silverlight-4.0 datacontractserializer

我有一个包含一些业务对象的Silverlight 4项目。我添加了一个测试项目。其中一项测试是使用DataContractSerializer从Silverlight项目序列化业务对象。要引用DataContractAttribute,我必须添加对System.Runtime.Serialization的引用。但是,Silverlight运行时和Test项目的.NET 4运行时中存在不同且明显不兼容的版本。

在Silverlight项目中序列化对象的最佳策略是什么,以便标准.NET 4运行时可以使用它们?

3 个答案:

答案 0 :(得分:1)

为此,我会使用DataContractJsonSerializer。这会将您的业务对象序列化为json。它自3.5以来在Silverlight和.NET Framework中得到支持。

可以找到如何使用序列化程序的示例here

答案 1 :(得分:0)

如果您的对象允许(关于下面提到的约束),请尝试使用protobuf-bet等序列化程序或其他协议缓冲区实现之一。

http://code.google.com/p/protobuf-net/

他们对业务对象(合同,而不是)的实现施加了一些约束,例如,null和empty集合被认为等同于命名一个示例。

答案 2 :(得分:0)

我今天早上意识到我已经从非Silverlight项目中添加了对Silverlight项目的引用,并且VS 警告关于这不是一个好主意,但仍然允许非Silverlight项目跑。因为在每个项目中引用了不同版本的System.Runtime.Serialization,所以单元测试因无法加载该DLL而中止。