小弟碰到一个问题,是这样的:
客户端和web服务通信,webservice里有俩个方法:
1,public object[] LoadAllObjs(object obj)
2, public void Save(object[] objs)
第一个方法客户端解析后返回的是 ArrayOfAnyType 类型,客户端使用List<object> objs 能接收。
第二个方法客户端解析后是Save(webservice.Reference1.ArrayOfAnyType objs),但是传递 object[] 的数组时候
却提示无法将类型 object[] 类型转换成 webservice.Reference1.ArrayOfAnyType 有哪位高人知道怎么解决这个问题,急求!

解决方案 »

  1.   

    设计跨进程的通讯协议时,必须给予明确的强类型定义的接口,不要写object而要写上恰好等于你要传递的那个类型。
      

  2.   

    sp1234,久仰你的大名,以前看过你的一些文章,真的很感谢你能抽空答复我。
    这个问题产生我要说明下,原有的webservice和dal层是采用codesmith生成的,webservice里对每个数据库表基本都定义了满足基本增删改查的方法,另外有个扩展webservice来针对特殊操作,对于中小型的项目很省时省力。但是目前碰到一个项目有一两百张表,这样生成的web服务太庞大了,我以前用的一台旧台式机没法生成,现在用的双核弄一次也要半个小时,实在无法忍受,所以想改造一下服务。
    具体思路是客户端具体页面传递对象数组到webservice,由webservice通过反射来解析对象(反射很慢,这里会用缓存),执行操作;然后返回object数组到客户端,客户端自己转换(原来考虑过接口,但是接口不能序列化,无法用在webservice里),由此有了问题里说的。
    现在这里我已经自己解决了,客户端只用实例化一个 ArrayOfAnyType对象,用Add方法把需要传递的对象添加进去,这样就可以传递 object 数组了。webservice端可以识别并做出相应操作。
      

  3.   

    JAVA 里ArrayOfAnyType这个垃圾对象做的一点儿不好。传递整个list<T>也可以的。