簡體   English   中英

無法將類型&#39;object [] []&#39;轉換為&#39;System.Collections.Generic.List <object> “

[英]Cannot convert type 'object[][]' to 'System.Collections.Generic.List<object>'

我正在嘗試創建和使用Web服務...我正在使用.NET Framework 4.0(c#)。 該服務公開了這樣的方法:

  public List<object[]> GetData(string strRegion, List<string> lstBrand, List<string> lstColor)

然后在客戶端應用程序上,聲明一個對象列表:

  List<object[]> lst = new List<object[]>();

...並嘗試像這樣填充它:

  MyService.MyClient os = new MyClient();
  lst = os.GetData(myRegionString, myBrandList, myColorList);

...但是我得到“無法將類型'object [] []'隱式轉換為'System.Collections.Generic.List'”。 我究竟做錯了什么?

謝謝!

在解決方案資源管理器中,右鍵單擊您的服務並進行配置。 您可能已將數據收集默認類型設置為數組。 您可以將其設置為列表類型。 另外,我會重新考慮通過Web服務發送object 您通常需要定義明確的數據類型。 我認為您甚至無法通過Web服務發送類型object

嘗試

MyService.MyClient os = new MyClient();
  lst = os.GetData(myRegionString, myBrandList, myColorList).ToList();

當列表從Web服務傳遞到客戶端時,列表將被序列化為數組,因此您需要再次將其轉換回列表。

MyClient.GetData()方法返回一個鋸齒狀的數組。 要將此數組轉換為列表,您應該能夠使用System.Linq命名空間中的ToList()方法:

lst = os.GetData(myRegionString, myBrandList, myColorList).ToList();

顯然,您返回的是鋸齒狀數組,而不是object []的常規列表。 已經提出了一種解決方案-只需更改返回值的類型即可。 但是我認為更好的方法是在各處使用接口-數組和通用列表都實現IList,因此,如果您使方法返回IList類型的值,並且第一個變量也是IList,則不應即使您的方法返回鋸齒狀數組也有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM