Web service方法返回List或者ArrayList数据类型

在.NET Framework 2.0环境下,调用Web Service时,返回List<T>对象能够正常工作,但返回ArrayList时会出现问题。由于ArrayList不是强类型,导致生成的代理服务无法确定对象类型。为解决这个问题,可以通过XMLInclude属性明确指定类型,从而在客户端像访问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对象。

转载于:https://www.cnblogs.com/Bay-Max/p/3605499.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值