我有一个包含一些业务对象的Silverlight 4项目。我添加了一个测试项目。其中一项测试是使用DataContractSerializer
从Silverlight项目序列化业务对象。要引用DataContractAttribute
,我必须添加对System.Runtime.Serialization
的引用。但是,Silverlight运行时和Test项目的.NET 4运行时中存在不同且明显不兼容的版本。
在Silverlight项目中序列化对象的最佳策略是什么,以便标准.NET 4运行时可以使用它们?
答案 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而中止。