繁体   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