网络服务使用多态的方法
在网络服务方法中,往往使用的都是一个具体类型的参数,这个参数一般就是一个数据对象ASP .网络服务通过声明XmlIncludeAttribute可以实现网络服务方法中运用多态。
XmlIncludeAttribute允许XmlSerializer在序列化火反序列化对象时识别类型。当应用XmlIncludeAttribute时,需指定派生类的类型。XmlSerializer序列化同时包含基类和派生类的对象之后,它就可以识别两种对象类型。
首先定义基类车辆和派生类汽车:
公共抽象类车辆{公共字符串LicenseNumber { get设置;}公共DateTime MakeTime { get设置;} }公共级Car : Vehicle { public int门牌号{ get设置;} } 定义添加车辆的网络方法,声明XmlInclude需要添加对命名空间系统Xml。序列化的引用:
[WebMethod] [XmlInclude(类型(汽车))]公共void AddVehicle(车辆车辆){ }查看生成的wsdl,wsdl利用延长的基础属性来描述汽车继承车辆。
查看引用网络服务生成的参考。铯文件车辆类会有XmlIncludeAttribute的声明:
[系统XML。序列化。xmlincludeattribute(类型为(汽车))][系统CodeDom。编译器。GeneratedCodeAttribute('System .Xml ',' 4。0 .30319 .1 ')][系统. serializable属性()][系统。诊断。调试器步骤通过属性()][系统组件模型。DesignerCategoryAttribute('代码')][系统XML。序列化。xmltypeattribute(Namespace=' http://tempuri。组织/')公共抽象分部类车辆:对象客户端测试代码:
静态void Main(字符串[]参数){ localhost .WebService1SoapClient c=新的本地主机web服务1 Soapclient();本地主机汽车汽车=新的本地主机Car() { LicenseNumber='0001 ',MakeTime=DateTime .现在,door num=2c . AddVehicle(汽车);} 在网络服务的添加车辆方法可以查看传过来的参数:
网络服务可以支持多态,不过仅仅限制在可以直接引用网络服务的时候有生成可序列化的代码时能够使用,要在其他的客户端使用还是得费一番周折。
以上就是本文的全部内容,希望对大家的学习有所帮助。
版权声明:网络服务使用多态的方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。