【问题标题】:How to implement the client using this example如何使用此示例实现客户端
【发布时间】:2015-01-16 09:12:06
【问题描述】:

我正在使用这个Return list in WCF 示例,但我无法正确实现客户端代码。该示例有效。我希望在客户端传输列表。

到目前为止我的代码:

List<Person> aPerson = new List<Person>()
Person y = new Person()'
aPerson.Add(y.id, y.name, y.adress, y.salary, y.country)

这是服务器:

[DataContract]
public class Person
{
    public string Id;
    public string name;
    public string address;
    public string salary;
    public string country;

    public Person()
    { }

    public Person(string _id, string _name, string _address, string _salary, string _country)
    {
        Id = _id;
        name = _name;
        address = _address;
        salary = _salary;
        country = _country;
    }

    [DataMember]
    public string Idps
    {
        get { return Id; }
        set { Id = value; }
    }

    [DataMember]
    public string nameps
    {
        get { return name; }
        set { name = value; }
    }

    [DataMember]
    public string addressps
    {
        get { return address; }
        set { address = value; }
    }

    [DataMember]
    public string salaryps
    {
        get { return salary; }
        set { salary = value; }
    }

    [DataMember]
    public string countryps
    {
        get { return country; }
        set { country = value; }
    }

}


public List <Person> GetData(string Id)
    {

        //Create a List of Person objects
        List<Person>employeelist =new List<Person>();

        employeelist.Add(new Person("10", "name", "myAdress", "1000", "myCountry");

        }

        //Return the list that contains Person objects
        return employeelist;

    }

我不知道如何使用上面的代码实现客户端。服务器返回列表,我想将列表本地存储在客户端。

【问题讨论】:

  • 您发布的代码显示与从 WCF 服务向客户端返回 List&lt;T&gt; 完全无关。请发布相关代码。
  • 上面的代码在客户端。我正在创建一个新列表,该列表将由人员对象填充,这些对象将具有 ID、姓名、地址、薪水、国家/地区等属性。人员对象将由服务器发送。
  • 那你为什么要发布不相关的代码?我认为您应该重新考虑并重新提出您的问题,因为现在它一团糟。或者至少先看看full example,以了解应该如何制作服务器客户端。现在我投票结束,因为问题不清楚。
  • 问题已更新。希望现在更清楚了。

标签: c# wcf


【解决方案1】:

我认为您最好浏览一个完整的端到端示例,如下所示:http://msdn.microsoft.com/en-us/library/bb386386.aspx 这应该可以帮助您快速了解 WCF。

但是,作为一个快速开始...我假设在您的界面中您已经使用 [OperationContract] 属性修饰了您的方法 GetData

然后在客户端上你需要引用 WCF 服务。添加服务时,您应该单击对话框左下角的高级按钮。将 集合类型 下拉列表从 System.Array 更改为 System.Collections.Generic.List.

最后,您的客户端应该能够使用如下代码调用服务:

public void SampleClientCode()
{
    using (var client = new ServiceReference1.Service1Client())
    {
        List<Person> results = client.GetData("12345");

        // Now do something with the data... Example
        string firstPersonsName = results.First().nameps;
    }
}

注意:Person 类中的属性命名约定不是很好,应该修改。

【讨论】:

  • 我已经试过了。我收到此错误:Cannot implicitly convert type 'WcfServiceLibrary1.Person[]' to 'System.Collections.Generic.List&lt;WcfServiceLibrary1.Person&gt;'
  • 那是因为当您添加引用时,您可以说您希望集合作为通用列表返回。默认情况下,它们是数组。我会更新答案。
  • 该死,我在搜索互联网时读到了有关在某处添加列表引用的信息。
  • @g90 为了完整性,我已经添加了额外的步骤。
  • 从一开始就是这个问题!非常感谢,我为我的格式错误的问题道歉。
猜你喜欢
  • 2017-06-02
  • 2012-03-03
  • 1970-01-01
  • 2010-09-25
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多