![](/img/trans.png)
[英]Cannot convert object of type 'System.String' to type 'System.Collections.Generic.List`1
[英]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.