子类化列表时,WCF返回数据缺少数据<;T>;

子类化列表时,WCF返回数据缺少数据<;T>;,wcf,collections,return-value,subclass,message,Wcf,Collections,Return Value,Subclass,Message,我在客户端和服务器之间共享合同(不使用生成的代理)。这是合同(注意,我也尝试了ObservableCollection): 公共类MyList:列表{ 公共整数总计{get;set;} 公共MyList(){} } 在服务器上调用EndMyOperation异步回调方法时,仍然会设置总数。但是,当我查看客户机上的值时,总计不见了(设置为0)。跟踪清楚地显示没有传递附加属性。有人能解释一下为什么会发生这种情况吗 <MessageLogTraceRecord> <s:Enve

我在客户端和服务器之间共享合同(不使用生成的代理)。这是合同(注意,我也尝试了ObservableCollection):

公共类MyList:列表{
公共整数总计{get;set;}
公共MyList(){}
}
在服务器上调用EndMyOperation异步回调方法时,仍然会设置总数。但是,当我查看客户机上的值时,总计不见了(设置为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>

http://tempuri.org/MyOperation
695d611f-2b3d-48ca-80b8-7ceae4fd423f
1.
12
我只想澄清一下,我知道我可以解决这个问题,不需要子类化和做下面的事情。相反,我试图理解为什么会发生上述行为

public class MyPagedList<T> { 
    public int Total { get; set; } 
    public List<T> MyList { get; set; }
    public MyPagedList() { MyList = new List<T>(); }
}
公共类MyPagedList{
公共整数总计{get;set;}
公共列表MyList{get;set;}
公共MyPagedList(){MyList=new List();}
}

MyItem
[Serializable]
?或者更确切地说,
MyItem
上的字段是否可序列化


或者这可能是您的问题:

您可以发布实际的数据合同吗?是否已将DataMember属性正确放置在希望序列化的属性之上?@MattC-MyList类是datacontract。不需要在代码上放置属性。没有显式标记属性,但它们是可序列化的。你的链接正是我要找的。谢谢
public class MyPagedList<T> { 
    public int Total { get; set; } 
    public List<T> MyList { get; set; }
    public MyPagedList() { MyList = new List<T>(); }
}