我有一堆只有XmlSerializable的第三方合同,并且无法更改,但是我需要通过WCF通道传输它们。它们没有使用DataContract / DataMember属性进行修饰,我无法控制它。
示例:
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.opentravel.org/OTA/2003/05")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.opentravel.org/OTA/2003/05", IsNullable=true)]
public partial class HotelReservationsType
{
[System.Xml.Serialization.XmlElementAttribute("HotelReservation")]
public HotelReservationsTypeHotelReservation[] HotelReservation
{
get
{
return this.hotelReservationField;
}
set
{
this.hotelReservationField = value;
}
}
[System.Xml.Serialization.XmlArrayItemAttribute("RoutingHop", IsNullable=false)]
public RoutingHopTypeRoutingHop[] RoutingHops
{
get
{
return this.routingHopsField;
}
set
{
this.routingHopsField = value;
}
}
...
我创建了一个非常基本的WCF服务(主要由Visual Studio生成)和一个客户端,该服务器也是由VS使用“添加服务引用”功能生成的。上述合同是在两个项目引用的单独程序集中,并且在客户端中已选择重新使用已知类型。
根据这个(据我所知):WCF Serializable Types WCF应该能够传输上述类型的对象,但我得到的所有成员都是空的。
为什么我的对象只包含空值,我做错了什么? DataContract / DataMember装饰必须具有?那么我们如何使用第三方非WCF合约?