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