您的位置:首页 > 编程语言 > Java开发

为什么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之类的类型不能传到服务端。

不过我这次参数个数增多,那肯定是由于这个原因而增加的属性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: