使用WCF数据类型

时间:2011-12-22 17:07:31

标签: c# asp.net wcf

我第一次尝试使用WCF但是我遇到的问题很快,我不明白。我还没有改变自动生成代码的原始结构。我得到了这个代码在网站上工作。

using ServiceReference.ServiceClient wcfClient = new ServiceReference.ServiceClient())
{
  string data = wcfClient.GetData(32);
  Label1.Text += data;
}

但是当我开始使用这段代码时,我遇到了一些问题。

ServiceReference.Kund kund;

using (ServiceReference.ServiceClient wcfClient = new ServiceReference.ServiceClient())
{
    string data = wcfClient.GetDataUsingDataContract(kund);
}

我收到了这个错误。我不能真正看到数据类型有任何问题,它不是一个字符串。

  

无法将类型'Webbshop.ServiceReference.Kund'隐式转换为'string'

编辑:

[ServiceContract]
public interface IService
{
    [OperationContract]
    string GetData(int value);

    [OperationContract]
    Kund GetDataUsingDataContract(Kund kund);
}

[DataContract]
public class Kund
{
    int iD;
    [DataMember]
    public int ID
    {
        get { return iD; }
        set { iD = value; }
    }
}

1 个答案:

答案 0 :(得分:1)

你能告诉我们你有的服务合同(IMyService接口,或者你的情况下叫什么)?

通常,WCF服务生成的示例应用程序将有一个返回字符串的方法GetData,以及显示如何返回复杂数据类型的第二个方法

[ServiceContract]
public interface IService1
{
    [OperationContract]
    string GetData(int value);

    [OperationContract]
    CompositeType GetDataUsingDataContract(CompositeType composite);
}

此处:第二种方法 - 在您进行更改后 - 返回Kund。当然,如果你称那个返回Kund第二种方法,你不能只将整个Kund分配给一个字符串....你必须做类似的事情:

ServiceReference.Kund kund;

using (ServiceReference.ServiceClient wcfClient = new ServiceReference.ServiceClient())
{
    Kund returnedKund = wcfClient.GetDataUsingDataContract(kund);

    // then assign whatever properties from `data` you need to your string .....
    string data = returnedKund.ID.ToString();  // or something.....
}