如何使用接收强类型对象作为输入的WCF服务?

时间:2016-07-25 07:54:09

标签: c# winforms wcf

我是WCF的新手。我只是按照一个简单的演练来创建和使用一个简单的WCF服务(演练使用字符串数据类型)。但是,我无法使用自定义类型的WCF服务。这就是我的尝试:

首先,我创建了界面。

[DataContract]
    public class TicketInfo
    {
        public string TicketID { get; set; }
        public string TicketDescription { get; set; }
    }

    [OperationContract]
    String GetTicketInfo(TicketInfo ticketInfo);

然后我在实现接口的服务中创建了该方法:

public string GetTicketInfo(TicketInfo ticketInfo)
{
    return string.Format("The ID is {0}", ticketInfo.TicketID);
}

然后我在客户端添加了服务参考。

现在,我正在尝试使用该服务:

    Service1Client client = new Service1Client();

        string returnString;
        TicketInfo ticketInfo = new TicketInfo();
        ticketInfo.ID = "1";
        returnString = client.GetTicketInfo(ticketInfo);

代码在这里失败:

        ticketInfo.TicketID = "1";

错误消息是:

  

' Ticketnfo'不包含' TicketID'的定义没有延伸   方法' TicketID'接受类型' TicketInfo'的第一个参数。可能   发现(您是否缺少using指令或程序集引用?)

在客户端上显示TicketInfo的定义:

public partial class TicketInfo : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {

[System.NonSerializedAttribute()]
private System.Runtime.Serialization.ExtensionDataObject extensionDataField;

[global::System.ComponentModel.BrowsableAttribute(false)]
public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
    get {
        return this.extensionDataField;
    }
    set {
        this.extensionDataField = value;
    }
}

为什么客户端上的ServiceReference1.TicketInfo没有服务器上的Service1.TicketInfo的所有属性?我该如何使用该服务?

1 个答案:

答案 0 :(得分:1)

尝试使用DataMember属性

装饰DataContract的成员