将Array传递给WCF函数

时间:2013-02-17 03:18:55

标签: c# .net xml wcf

所以,我有一个C#项目,我正在使用Linq到xml加载一个XML文档(包含学生和Id的名称),我必须从中获取相关数据(它们的截止日期,数量和内容)。 WCF服务。我刚刚右键单击添加服务并添加服务引用,现在需要将数组传递给GetData函数,我初始化但显然是null。我无法将我的数组转换为服务类型,该函数也返回数组。如何将数组分配给studentArray?

 ServiceReference1.ServiceClient client = new ServiceReference1.RycorServiceClient();

Application.ServiceReference1.Student[] studentArray = new ServiceReference1.Student[9];

        Student[] array = studentList.ToArray();

        //for (int i = 0; i <= array.Count(); i++)
        //    studentArray[i] = (RycorApplication.ServiceReference1.Student)array[i];

        //this gives me an error says Cannot convert type 'Application.Student' to 'Application.ServiceReference1.Student'.

        var data = client.GetData(studentArray);

获取此数据后,如何将此数据保存到我的XML文件中?

2 个答案:

答案 0 :(得分:1)

您收到此错误是因为Application.Student是一个不同的类型,您可以尝试使用Application.ServiceReference.Student来保存学生列表而不是&#34; studentList&#34;类型。

我认为&#34; studentList是一个&#34; Application.Student&#34;列表,您必须使用相同的模型或使用这样的东西在它们之间复制(在第一个答案中): Copy values from one object to another

答案 1 :(得分:0)

你几乎必须这样做:

List<ServiceReference1.Student> wcfStudentList = new System.Collections.Generic.List<ServiceReference1.Student>();
        foreach (var student in studentList)
        {
            wcfStudentList.Add(new ServiceReference1.Student()
            {
                ID = student.ID,
                Name = student.Name,
                ..etc..
            });
        }
        var data = client.GetStudentData(wcfStudentList.ToArray());

如果您可以获取学生ID的列表而不是传递整个对象,我必须质疑您为什么不改变WCF调用?