Открытые свойства не десериализованы в REST wcf service - PullRequest
0 голосов
/ 28 октября 2010

У меня есть служба 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, который является простым классом (не производным от чего-либо), он также возвращается должным образом.

Проблема возникает только с полями Public класса коллекции groups.

Поэтому я считаю, что это проблема десериализации, и я попытался добавить атрибут [Datamember], [seriaizable] и реализовать ISerializable, ноничего не помогло.

Любая помощь будет принята с благодарностью.

Спасибо

1 Ответ

0 голосов
/ 29 октября 2010

Хорошо, это то, что я сделал, если кто-то еще сталкивался с этим вопросом.

Как я выяснил, это поведение по умолчанию для DataContractSerializer, также не очень хорошая идея для добавления других свойств в коллекции.Коллекции должны быть только коллекцией предметов.Поэтому я изменил код, как показано ниже, и он работает

public class Groups

{private int total;частный 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; }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...