我有Restful wcf服务返回以下类,但Total和Count字段在到达客户端时变为0。但是它们在服务器端具有正确的值。
public class Groups : List<Group>
{
private int total;
private int start;
/// <summary>
/// Total number of Groups in the result set irrespective of the paging
/// </summary>
public int Total
{
get
{
return total;
}
set
{
total = value;
}
}
/// <summary>
/// Index (in the full non paged result set) of the first group in the set.
/// </summary>
public int Start
{
get
{
return start;
}
set
{
start = value;
}
}
}
问题是当客户端从服务调用接收返回值时,Start和Total字段始终为0.但是当调试服务的代码时,它返回正确的值,但是当它到达客户端时它们已成为0. 但是正确返回基类的列表(它不会丢失)
当我返回Group类时,它是一个简单的类(不是从任何东西派生的),它也会正确返回。
只有group集合类的Public字段才会出现问题。
所以我认为这是一个反序列化问题,并尝试添加[Datamember]属性,[seriaizable]并实现ISerializable但没有任何效果。
非常感谢任何帮助。
由于
答案 0 :(得分:0)
好的,如果有其他人遇到这个问题,我就会这样做。
正如我发现这是DataContractSerializer的默认行为,将其他属性添加到集合也不是一个好的设计理念。集合应该只是一个项目的集合。 所以我所做的是修改下面的代码,它可以工作
public class Groups
{ 私人整体; private int start; 私人名单组;
public int Total
{
get { return total; }
set { total = value; }
}
public int Start
{
get { return start; }
set { start = value; }
}
public List<Group> Values
{
get { return groups; }
set { groups = value; }
}
}