在有的电脑上报错有的不报错,关于强制类型转换

zlj113 2010-03-14 09:33:04
table = (DataTable)method.Invoke(o, aa); 这句代码报错,报错如下:


---------------------------
System.InvalidCastException: 无法将类型为“TestWebService.GetUserInfotempResponseGetUserInfotempResult”的对象强制转换为类型“System.Data.DataTable”。 在 postAC.Form1.toolStripButton3_Click(Object sender, EventArgs e)
---------------------------

System.InvalidCastException: 无法将类型为“”的对象强制转换为类型“System.Data.DataTable”


代码在我自己上调试没有问题,而在同事的机器上调试就有问题
我的是.net 2.0.50727 sp2 同事的是 .net 2.0.50727

如果这样的话,我同事的机器上需要装什么才行?我已经给他装了.net framework2.0 sp2了,可还是不行。
...全文
284 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你为什么不首先通过比较标准的方式来生成并使用ws客户端代理程序呢?

把你的所谓“动态加载”放在一边,先在1分钟内实现该有的功能吧。
zlj113 2010-03-14
  • 打赏
  • 举报
回复
我是通过动态加载webservice,然后从webservice中获得一个datatable给我的cs程序的
zlj113 2010-03-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wuyq11 的回复:]
检查类型
[/Quote]
-----------
我看了下,在报错的机器上类型是这个:TestWebService.GetUserInfotempResponseGetUserInfotempResult
zlj113 2010-03-14
  • 打赏
  • 举报
回复
Assembly asm = Assembly.LoadFrom("Test.dll");


Type t = asm.GetType("TestWebService.CNMMBBWebService");
object o = Activator.CreateInstance(t);

MethodInfo method = t.GetMethod("GetUser
object[] aa = { str, str2, Arg.lunid, Arg.vivion };
table = (DataTable)method.Invoke(o, aa);
wuyq11 2010-03-14
  • 打赏
  • 举报
回复
检查类型
wuyq11 2010-03-14
  • 打赏
  • 举报
回复
object result = methodInfo.Invoke(o, aa);
ckl881003 2010-03-14
  • 打赏
  • 举报
回复
invoke返回的是object 你确定你同事那里返回的是由DATATABLE转换的OBJECT么?
aofengdaxia 2010-03-14
  • 打赏
  • 举报
回复
Invoke应该不能转化为datatable吧
qldsrx 2010-03-14
  • 打赏
  • 举报
回复
(DataTable)method.Invoke(o, aa);

建议把该method的定义给出,我想知道那个DataTable是如何产生的。
孤剑 2010-03-14
  • 打赏
  • 举报
回复
1、检查同事机器上的 webservice 的代码和你机器上的是否一致;
2、检查同事机器上 webservice 用 IE 访问是否正常,是否有防火墙之类的;
3、重新编译webservice 后,重启 iis,后访问试试问题是否解决,有问题欢迎随时反馈。
zlj113 2010-03-14
  • 打赏
  • 举报
回复
help me~~~~~~
zlj113 2010-03-14
  • 打赏
  • 举报
回复
我试过了的,都有1条记录
zlj113 2010-03-14
  • 打赏
  • 举报
回复
什么值是多少?你的意思是看datatable里有没有记录么?
wangan2008 2010-03-14
  • 打赏
  • 举报
回复
table = (DataTable)method.Invoke(o, aa);

这句 分2次执行 看看里面的值是多少
zlj113 2010-03-14
  • 打赏
  • 举报
回复
那到底是为什么呢?
sunnj87 2010-03-14
  • 打赏
  • 举报
回复
感觉应该跟版本没关系吧
zlj113 2010-03-14
  • 打赏
  • 举报
回复
为这破事我倒腾两天了,各位拜托了。。。
zlj113 2010-03-14
  • 打赏
  • 举报
回复
谢各位朋友了。~~
zlj113 2010-03-14
  • 打赏
  • 举报
回复
SP2 之前我也给他装了一样的报错的。。。

现在好了,我把所有返回datatable 全改成dataset 。就正常了。
qldsrx 2010-03-14
  • 打赏
  • 举报
回复
给你的同事升级下.NET版本,最起码要SP2啊,如果觉得麻烦,直接安装.NET3.5SP1,包含了以前所有版本的升级。
加载更多回复(9)

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧