将列表作为数组返回的Web方法

时间:2012-10-22 10:21:50

标签: c# asp.net web-services

我的web方法正在返回一些值作为列表,但是在调用这些web方法时将其作为数组对象。如何将它与list相同。我的web方法类似于此

        [WebMethod]
        public List<ReturnList> GetReturnList()
        {
           List<ReturnList> ReturnList=new List<ReturnList>();
        //Calcuations
            return ReturnList;
        }

3 个答案:

答案 0 :(得分:4)

您的网络方法定义并不缺少任何内容。由于SOAP以及如何定义和结构化列表,列表将转换为数组。如果您在使用该方法时确实需要一个列表,请将该数组转换回您正在使用它的List。您还可以创建一个Web服务包装器,您可以在其中包装该Web方法并返回List&lt;&gt;而不是数组。方法体只会调用Web服务并将数组转换为List&lt;&gt;并将其归还。

检查Here

答案 1 :(得分:3)

List更像是一种特定于语言的数据结构。所有特定于语言的数据类型都将映射到XML数据类型的语言中性数据类型。

当发生请求/响应时,将发生XML映射,从而通过平台和语言实现互操作性。

The reason that the List kind of data types are not getting as the same data type,
  because there is no equivalent XML data type available.

因此,您可以使用实用程序将List转换为数组,反之亦然,以满足您的要求

答案 2 :(得分:0)

  [WebMethod]
    public static Details[] GetData()
    {
        DataSet dsDetails = new DataSet();
        List<Details> details = new List<Details>();
        try
        {
            Database db = DatabaseFactory.CreateDatabase("String");
            DbCommand dbCommand = db.GetStoredProcCommand("GetDetails");
            
            dsDetails = (DataSet)db.ExecuteDataSet(dbCommand);
            foreach (DataRow dtrow in dsDetails.Tables[0].Rows)
            {
                Details report = new Details();
                report.ID = Convert.ToInt32(dtrow["ID"].ToString());
                report.ReferenceID = Convert.ToInt32(dtrow["ReferenceID"].ToString());
                report.ProductID = dtrow["Name"].ToString();
                
                details.Add(report);
            }
        }
        catch (Exception)
        {
        }
        finally
        {

        }

        return details.ToArray();
    }