开发者

WCF result deserializing to default values for value types in a list of key/value pairs

I have a开发者_开发百科 WCF service and the result is a custom TimeSeries class defined as:

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

My service method creates an array of these objects to return. Debugging the service method, I can see that an array containing one of these objects is created correctly (it has a name and 37 vk pairs of data). Using Fiddler, I can see that the object is being serialized and sent (the data is still correct in the HTTP response). However the problem comes when on the client I check the result object and it is incorrect. Specifically, I get a TimeSeries object with the correct name, and the correct number of of kv pairs, but they contain the default values for each DateTime and double (ie 01/01/0001 12:00AM & 0.0).

My client is Silverlight v4 and I am using an automagically generated service reference. The problem appears to be related to deserialization. Anyone have any thoughts as to why it is doing this, what I am missing, or how I can fix it?


As it is stated in Serializing a list of Key/Value pairs to XML:

KeyValuePair is not serializable, because it has read-only properties

So you need your own class, just like the answer on that page says.


An alternative rather than using your own class is to use a Dictionary<DateTime,double> instead which seems to serialize and deserialize fine.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜