为什么C#动态调用Java的cxf多了bool型参数
2015-11-30 16:16
260 查看
最近的一个项目需要C#调用Java的cxf发布的接口,接口参数文档只给我的是两个long型,但是通过我动态加载发现,参数是四个。
比如接口文档给的接口是
TestFunc(long, long);
而我通过动态加载,反射后发现接口为
TestFunc(long, bool, long, bool);
之前一直怀疑是否接口文档没有及时更新,造成的错误。不过后面空闲后仔细跟踪了代码,并用reflector反射了动态编译的dll。
发现dll中多出的bool参数的名称很有规律。
比如上面接口反射出来的具体参数名为
TestFunc(long userid, bool useridSpecified, long sno, bool snoSpecified);
看见没,bool的参数名就是前面long型的参数名加上Specified。
在网上搜索了很久,搜索【c#动态调用cxf 多参数】,一直搜索不到结果,最后用【c# Specified属性】好不容易才搜到一篇文章
http://blog.csdn.net/xiaogui340/article/details/8548847
才明白原来这个多出来的属性表示是否序列化其对应参数,并且string型参数是不需要这个属性的。
因为java接口不是我写的,我第一次调用,也不能清楚知道是否如文中所述,如果没有此属性,则int,datetime之类的类型不能传到服务端。
不过我这次参数个数增多,那肯定是由于这个原因而增加的属性。
比如接口文档给的接口是
TestFunc(long, long);
而我通过动态加载,反射后发现接口为
TestFunc(long, bool, long, bool);
之前一直怀疑是否接口文档没有及时更新,造成的错误。不过后面空闲后仔细跟踪了代码,并用reflector反射了动态编译的dll。
发现dll中多出的bool参数的名称很有规律。
比如上面接口反射出来的具体参数名为
TestFunc(long userid, bool useridSpecified, long sno, bool snoSpecified);
看见没,bool的参数名就是前面long型的参数名加上Specified。
在网上搜索了很久,搜索【c#动态调用cxf 多参数】,一直搜索不到结果,最后用【c# Specified属性】好不容易才搜到一篇文章
http://blog.csdn.net/xiaogui340/article/details/8548847
才明白原来这个多出来的属性表示是否序列化其对应参数,并且string型参数是不需要这个属性的。
因为java接口不是我写的,我第一次调用,也不能清楚知道是否如文中所述,如果没有此属性,则int,datetime之类的类型不能传到服务端。
不过我这次参数个数增多,那肯定是由于这个原因而增加的属性。
相关文章推荐
- java设计模式----外观模式(门面模式)
- intllij idea 出现 java.lang.AssertionError:upexpected content storage modification错误信息
- java、js 对于四舍五入、向上取整、向下取整
- Myeclipse自动生成的get set方法 加上文本注释
- Bean的生命周期
- 常见java异常
- 一、编写高质量的代码—Java开发中通用的方法和准则(笔记)
- SpringMVC下打包文件的下载
- 基于JDK API实现文件的压缩与解压
- 使用Spring发送基于freemarker模板的邮件
- SpringMVC下Excel文件的上传下载实现
- MyBatis与Spring集成
- Java编码规范—约定也要配置
- Java集合框架应用
- Selection sort
- Spring 注解 之 @Transactional
- Spring注解注入
- 从Java类库看设计模式(5)
- wsdl2java根据WSDL文件生成java文件
- 从Java类库看设计模式(4)