我有一个简单的类,比方说“团队”,并且我使用 GetTeams 操作公开了一个 WCF 服务(basicHttpBinding,托管在 IIS 中),该操作返回一个团队数组。
Team 类看起来像
[DataContract]
public class Team
{
[DataMember]
public int Id { get; set; }
[DataMember]
public Point Position { get; set; }
[DataMember]
public string Code { get; set; }
[DataMember]
public bool Available { get; set; }
[DataMember]
public string Extra { get; set; }
[DataMember]
public double X { get; set; }
[DataMember]
public double Y { get; set; }
}
在客户端(Silverlight 3.0 应用程序)上,我获取了所有数据,但 Position 属性包含一个默认 Point 实例。Point 结构是可序列化的System.Windows.Media.Point 。我还添加了 X 和 Y 属性来复制位置数据,以查看它是否正确位于导线的另一端。
截获的 XML(感谢 Firebug!)如下所示:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetTeamsResponse xmlns="http://tempuri.org/">
<GetTeamsResult xmlns:a="http://schemas.datacontract.org/2004/07/MyProject.Data" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:Team>
<a:Code>A23HJGF23</a:Code>
<a:Available>true</a:Available>
<a:Extra i:nil="true"/>
<a:Id>1</a:Id>
<a:Position xmlns:b="http://schemas.datacontract.org/2004/07/System.Windows">
<b:_x>572194.59937858</b:_x>
<b:_y>322518.3889979</b:_y>
</a:Position>
<a:X>572194.59937858</a:X>
<a:Y>322518.3889979</a:Y>
</a:Team>
<!-- other <a:Team> elements -->
</GetTeamsResult>
</GetTeamsResponse>
</s:Body>
</s:Envelope>
因此,似乎存在反序列化问题。不抛出异常!
为什么?