我有一个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,我正在使用自动生成的服务引用。问题似乎与反序列化有关。任何人都有任何想法,为什么它这样做,我缺少什么,或我如何解决它?
答案 0 :(得分:1)
正如Serializing a list of Key/Value pairs to XML中所述:
KeyValuePair不可序列化,因为它具有只读属性
所以你需要自己的课程,就像那个页面上的答案所说的那样。
答案 1 :(得分:0)
替代而不是使用您自己的类是使用Dictionary<DateTime,double>
而不是似乎序列化和反序列化。