[英]How can I extend IEnumerable<T> to load my collection from a web service?
[英]How to return IEnumerable<T> from web service
我想知道為什么我不能通過Web服務返回IEnumerable<T>
。
在我的web服務中,我返回一個IEnumerable<T>
但當我在VS 2010中檢查IntelliSense時,我看到它給了我一個T[]
。
有人可以給我這個行為的解釋嗎?
來自MSDN :
我可以在Web服務中使用泛型嗎?
很不幸的是,不行。 Web服務必須公開基於WSDL的契約。 此類合同始終受所使用的消息格式的表現力的限制。 例如,基於HTTP-GET的Web服務僅支持基本類型(如int或string),但不支持復雜類型(如DataSet)。 基於SOAP的Web服務功能更強大,但SOAP無法表示泛型類型參數。 因此,目前,您無法定義依賴於泛型類型的Web服務。 也就是說,您可以定義依賴於封閉構造泛型類型的.NET Web服務,例如:
public class MyWebService
{
[WebMethod]
public List<string> GetCities()
{
List<string> cities = new List<string>();
cities.Add("New York");
cities.Add("San Francisco");
cities.Add("London");
return cities;
}
}
在上面的示例中,List將被編組為字符串數組。
Array T[]
支持IEnumerable<T>
你正在返回IEnumerable<T>
public IEnumerable<T> Something()
{
return new T[] {};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.