Web service方法返回List或者ArrayList数据类型
我们调用web service的时候经常需要返回一些对象集合(本文章环境.net framework2.0+)。
准备工作:
//定义一个实体 public class Entity { private string _Name; public string Name { get { return _Name; } set { _Name = value; } } public Entity() { } public Entity(string Name) { _Name = Name; } }
1.返回List<T>:
定义web service方法
[WebMethod(Description = "测试", EnableSession = true)] public List<Entity> HelloWorld() { List<Entity> list = new List<Entity>(); list.Add(new Entity("kian"));return list; }
客户端调用web service方法:
MyWebReference.Service1 service = new MyWebReference.Service1(); List<MyWebReference.Entity> list = new List<MyWebReference.Entity>(service.HelloWorld());
以上调用都是正常的。问题在下面。
2.返回ArrayList:
[WebMethod(Description = "测试", EnableSession = true)] public ArrayList HelloWorld() { ArrayList al = new ArrayList(); al.Add(new Entity("kian")); return al ; }
客户端调用web service方法:
问题就在这里,为什么会这样呢?
原来是这样,ArrayList跟List不一样,它不是强类型,生成代理服务没办法去判断创建什么类型,那么这里怎么解决呢?
可以这么想,既然没办法判断创建类型,那么我们就明确指定创建的类型。
用XMLInclude属性明确告诉web service生成的类型:
[WebMethod(Description = "测试", EnableSession = true)] [System.Xml.Serialization.XmlInclude(typeof(Entity))]//告诉webservice,ArrayList将包含Entity的元素类型 public ArrayList HelloWorld() { ArrayList al = new ArrayList(); al.Add(new Entity("kian")); return al ; }
这样就可以在调用的时候像List一样访问Entity对象。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。