REST wcf服务中不反序列化公共属性

时间:2010-10-28 09:26:49

标签: c# wcf

我有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但没有任何效果。

非常感谢任何帮助。

由于

1 个答案:

答案 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; }
}

}