首页新闻找找看学习计划

远程 动态 生成 实例

0
悬赏园豆:100 [已解决问题] 解决于 2014-08-22 17:13

客户端传递参数给服务器,怎么能做到参数类型可变,且服务端根据客户端传过来的参数生成对应的实例:

例如:

客户端do(T),T可变,服务端do(T),T可变

lzh8189146的主页 lzh8189146 | 初学一级 | 园豆:112
提问于:2014-08-21 23:35
< >
分享
最佳答案
0

对于do<T>,在调用的时候,T确定,参数也值确定,那么只要:

1、传递参数时,把参数序列化为字符串(可以是json、xml等),同时把类型完整名也以参数的形式传递

2、服务端接收到数据后,首先解析参数类型,然后再依据参数类型反序列化参数内容为目标类型的对象

3、获得泛类型do<>,然后以此泛类型和参数类型一起构建实际的泛型do<T>

4、服务端使用do<T>运行

收获园豆:60
519740105 | 大侠五级 |园豆:5810 | 2014-08-22 08:43

参数是个对象实例,“依据参数类型反序列化参数内容为目标类型的对象”能做到?

lzh8189146 | 园豆:112 (初学一级) | 2014-08-22 12:36

@企_牛: 可以通过参数使用GETTYPE获取类型,然后根据这个类型去寻找最兼容的方法执行。

519740105 | 园豆:5810 (大侠五级) | 2014-08-22 13:27
其他回答(4)
0

传json自付串,但实际上没什么意义,你服务端要是事先不知道传入参数类型,你拿到了。也没用

吴瑞祥 | 园豆:28731 (高人七级) | 2014-08-22 08:12
0

当我没问答,我没发现你是做Java的

田麦成 | 园豆:1982 (小虾三级) | 2014-08-22 10:37
0

有个奇怪的问题,你都知道反射了,那还问啥呢?

就是用的反射技术,根据参数,反射可以生成对应的实例。

收获园豆:40
爱编程的大叔 | 园豆:29818 (高人七级) | 2014-08-22 12:30

生成对应的实例,能生成类的所有信息,但是参数的值能取到么?

支持(0) 反对(0) lzh8189146 | 园豆:112 (初学一级) | 2014-08-22 12:39

@企_牛: 参数的值那就更加没有问题了,你通过JSON什么值不能发呢?

其实这个问题应该只是楼主脑子一时没有转过弯来。

大概的流程应该是这样

1、通过反射生成新实例

2、通过Mapper技术将Client传过来的对象属性值赋值给新的对象。

支持(1) 反对(0) 爱编程的大叔 | 园豆:29818 (高人七级) | 2014-08-22 12:43
0

.net 里的WCF,Remoting 远程调用都不支持范型的

遗忘海岸 | 园豆:53 (初学一级) | 2014-08-22 15:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册