В возвращаемых данных WCF отсутствуют данные при создании подкласса списка <T> - PullRequest
0 голосов
/ 14 марта 2011

Я делю контракт между моим клиентом и сервером (не используя сгенерированные прокси). Вот контракт (обратите внимание, я также пробовал ObservableCollection):

public class MyList : List<MyItem> {
    public int Total { get; set; }
    public MyList() { }
}

Значение Total все еще устанавливается, когда на сервере вызывается метод асинхронного обратного вызова EndMyOperation. Однако, когда я смотрю на значение на клиенте, значение Total исчезает (устанавливается в 0). Трассировка ясно показывает, что дополнительный атрибут не передается. Кто-нибудь может пролить свет на то, почему это происходит?

<MessageLogTraceRecord>
  <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Header>
    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/MyOperation</Action>
    <ActivityId CorrelationId="d2872ac2-685e-4f94-b516-aaba4effa463" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">695d611f-2b3d-48ca-80b8-7ceae4fd423f</ActivityId>
    </s:Header>
    <s:Body>
      <MyOperationResponse xmlns="http://tempuri.org/">
        <MyOperationResult xmlns:d4p1="http://schemas.datacontract.org/2004/07/MyDataContract" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
          <d4p1:MyItem>
            <d4p1:MyId>1</d4p1:MyId>
          </d4p1:MyItem>
          <d4p1:MyItem>
            <d4p1:MyId>12</d4p1:MyId>
          </d4p1:MyItem>
        </MyOperationResult>
      </MyOperationResponse>
    </s:Body>
  </s:Envelope>
</MessageLogTraceRecord>

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

public class MyPagedList<T> { 
    public int Total { get; set; } 
    public List<T> MyList { get; set; }
    public MyPagedList() { MyList = new List<T>(); }
}

1 Ответ

0 голосов
/ 14 марта 2011

Является ли MyItem [Serializable]? Или, скорее, поля на MyItem Сериализуемые?

Или это может быть вашей проблемой: наследование-обобщение-сбор-и-сериализация

...