簡體   English   中英

如何返回IEnumerable <T> 來自網絡服務

[英]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.

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