1

我的 Web 方法将一些值作为列表返回,但是在调用这些 Web 方法时将其作为数组对象获取。我怎样才能将它与列表相同。我的 Web 方法类似于这样

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

3 回答 3

5

您的 Web 方法定义不缺任何东西。由于 SOAP 以及它的定义和结构方式,列表将被转换为数组。如果您在使用该方法时确实需要一个列表,请将数组转换回您正在使用它的列表。您还可以制作一个 Web 服务包装器,您可以在其中包装该 Web 方法并返回 List<> 而不是数组。方法体只会调用 Web 服务并将数组转换为 List<> 并返回它。

在这里检查

于 2012-10-22T11:03:10.630 回答
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.

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

于 2012-10-22T11:47:50.597 回答
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();
    }

于 2015-10-20T12:36:08.750 回答