在compact framework中,c#的,中传递了一个对象,结构如下:
[DataContract]
public class CProdList
{
[DataMember]
public string _ID { get; set; }
[DataMember]
public string _BillID { get; set; }
[DataMember]
public int SN { get; set; }
[DataMember]
public string Code { get; set; }
[DataMember]
public double Net { get; set; }
}
在服务器中收到,string类型的数据没有问题,_id,code,但int和double都成了0了,还是第一次遇到这个问题。
从客户端到服务器端有问题,
但从服务器端下载数据没有任何问题,比较怪异!!
追踪下来,发现发送之前,除了string序列化了,int 和double等类型没有序列化,
有谁知道如何解决啊?
------最佳解决方案--------------------
吧[DataContract],[DataMember]都去掉试试,.net3.5不需要写这个了。
------其他解决方案--------------------
不应该吧,真是奇怪。
------其他解决方案--------------------
这真奇怪。。。你这个CProdList有父类么?
------其他解决方案--------------------
该回复于2011-12-01 11:27:29被版主删除
------其他解决方案--------------------
去掉了[DataContract],[DataMember],效果一样,但怪异的是:如果CProdList中包含其他对象,比如
[DataContract]
public class CProdList
{
[DataMember]
public string _ID { get; set; }
[DataMember]
public string _BillID { get; set; }
[DataMember]
public int SN { get; set; }
[DataMember]
public string Code { get; set; }
[DataMember]
public double Net { get; set; }
[DataMember]
public Persion P{get;set;}
}
public class Persion
{
public double m;
public int i;
public string s;
}
对象persion序列化没有问题,但CProdList中的其他double,int还是没有序列化
------其他解决方案--------------------
对了,是将这个类当成接口的参数来传递的,
比如:
CProdList p = new CProdList;
......
client.Do(p);
------其他解决方案--------------------
解决了,必须得加
[DataMember(IsRequired = true, Order = 1)]
。。。