WCF为复杂类型

时间:2018-02-21 18:58:21

标签: c# wcf

我有一堆只有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应该能够传输上述类型的对象,但我得到的所有成员都是空的。

enter image description here

为什么我的对象只包含空值,我做错了什么? DataContract / DataMember装饰必须具有?那么我们如何使用第三方非WCF合约?

0 个答案:

没有答案