将对象列表传递给Web服务

时间:2012-08-30 19:07:57

标签: c# .net web-services

我有一个DataObjects类,其中包含一个包含int(EmailID)和字符串(EmailAddress)的UserEmail对象。

在C#.net应用程序中,如果我想显示电子邮件地址列表 - 我会创建并填充UserEmail对象列表。

List<DataObjects.UserEmails> myUserEmailsList = new List<DataObjects.UserEmails>();

并将其用作我碰巧使用的任何控件的数据源。

我需要将该列表传递给Web服务。我看不出怎么做。如果另一方使用以列表作为参数的方法编写Web服务 - 很好,我可以调用Web服务并传递我的列表。但他们如何才能从列表中提取数据 - 无法访问列表中创建对象的类?

有没有办法在不知道对象的数据结构是什么的情况下循环遍历对象列表?

2 个答案:

答案 0 :(得分:1)

当您使用其Web服务时,您必须符合其数据结构。您获取UserEmail对象数据,并将其转换为其服务所期望的对象。

如果您使用的服务只是需要数据作为获取或发布数据,您将不得不使用他们需要的任何密钥。因此,他们可能会使用“电子邮件”键而不是您的“EmailAddress”属性名称来获取电子邮件地址

答案 1 :(得分:0)

here a sample to pass list object to your webservice

    <%@WebService Language="c#" class="CustomObjectArrayWS"%>
using System;
using System.Collections;
using System.Web.Services;
using System.Xml.Serialization;
public class CustomObjectArrayWS
{
        [WebMethodAttribute]
        [XmlInclude(typeof(Address))]
        public ArrayList GetAddresses ()
    {
        ArrayList al = new ArrayList();
        Address addr1 = new Address("John Smith", "New York",12345);
        Address addr2 = new Address("John Stalk", "San Fransisco", 12345);

            al.Add(addr1);
            al.Add(addr2);

            return al;
    }
} 
// Custom class to be added to the collection to be passed in //and out of the service
public class Address
{
    public string name;
    public string city;
    public int zip;     
    // Default ctor needed by XmlSerializer
    public Address()
    {
    }
    public Address(string _name, string _city, int _zip  )
    { 
                    this.name = _name;
                    this.city = _city;
                     this.zip = _zip;
           }
       }

请参阅http://www.programmersheaven.com/2/XML-Webservice-FAQ-Pass-Array-Of-Custom-Objects