2012-10-22 53 views
1

我的Web方法返回一些值列表,但同時呼籲這些網站的方法得到它作爲陣列的I objects.How可以得到它一樣list.My網絡的方法是這樣的的Web方法返回列表獲得儘可能陣列

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

這是WCF?... –

+0

沒有,網頁服務 –

+1

我沒有使用「Web服務」,但也有可能是你需要設置在客戶端把它作爲一個列表不是陣列的配置。 –

回答

4

你的Web方法定義毫無缺欠。由於SOAP及其定義和結構,列表將被轉換爲數組。如果您在使用該方法時確實需要列表,請將該數組轉換回您正在使用該列表的列表。您也可以創建一個Web服務包裝器,您可以將該Web方法包裝起來並返回一個List而不是一個數組。方法體只會調用Web服務並將數組轉換爲列表<>並將其返回。

檢查Here

3

列表中更多的是語言特定的數據結構。所有特定於語言的數據類型都將映射到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. 

所以,你可以有一個實用程序將列表轉換爲數組或反之亦然,以滿足您的要求

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(); 
 
    }