WCF结果反序列化为键/值对列表中值类型的默认值

时间:2011-07-29 15:07:22

标签: wcf serialization silverlight-4.0 datacontract

我有一个WCF服务,结果是一个自定义的TimeSeries类,定义为:

[DataContract]
public class TimeSeries
{
  [DataMember]
  public string Name { get; set; }
  [DataMember]
  public List<KeyValuePair<DateTime, double>> Data { get; set; }
}

我的服务方法创建了一个返回这些对象的数组。调试服务方法,我可以看到正确创建了包含其中一个对象的数组(它有一个名称和37个vk数据对)。使用Fiddler,我可以看到对象被序列化并发送(HTTP响应中的数据仍然正确)。但是问题出现在客户端上我检查结果对象并且它是不正确的。具体来说,我得到一个具有正确名称的TimeSeries对象,以及正确的数字的kv对,但它们包含每个DateTime和double的默认值(即01/01/0001 12:00 AM&amp; ; 0.0)。

我的客户端是Silverlight v4,我正在使用自动生成的服务引用。问题似乎与反序列化有关。任何人都有任何想法,为什么它这样做,我缺少什么,或我如何解决它?

2 个答案:

答案 0 :(得分:1)

正如Serializing a list of Key/Value pairs to XML中所述:

KeyValuePair不可序列化,因为它具有只读属性

所以你需要自己的课程,就像那个页面上的答案所说的那样。

答案 1 :(得分:0)

替代而不是使用您自己的类是使用Dictionary<DateTime,double>而不是似乎序列化和反序列化。