• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

请教微软的技术专家。一个完全不合理的问题!C#足够变态的问题!

colinfly 2002-05-26 04:49:56
当我这么写的时候
1:Type t = typeof (IOPCGroups);
2:int i;


3:i=Groups.Count;
系统会在运行到3:时出现
Object reference not set to an instance of an object.
异常。

而当我在第三句前加上i=(int)t.InvokeMember ("Count", BindingFlags.Public | BindingFlags.GetField | BindingFlags.GetProperty, null, Groups, new object [] {});
这句沃并未实际用到的话时,就正常了!
能告诉我为什么呢!

1:Type t = typeof (IOPCGroups);
2:int i;

21:i=(int)t.InvokeMember ("Count", BindingFlags.Public | BindingFlags.GetField | BindingFlags.GetProperty, null, Groups, new object [] {});

3:i=Groups.Count;


...全文
56 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
colinfly 2002-06-01
qqchen79(知秋一叶)
谢谢!
但这个在VB中正常,在c#的immediate窗口也正常。会是什么原因呢?

我是想等想你这样的高手,所以只给了1分!我都很看得起自己了,对这个问题竟然没办法!
回复
qqchen79 2002-05-30
我试了一下,的确是这样。
但是这要设计到那个KEPServer实现,没办法跟进去调试了...
回复
rengo 2002-05-30
qqchen79:这个程序是这样的,不过比较麻烦
先到:http://www.opcsource.com/download_opc.html
下载个"KEPServerEX Server Super Pack Setup Version 4.0 Full Install"14M
然后安装这个软件,新建一个C#项目,再引用COM里的Kepware OPC Automation 2.0
执行一下几句:
private OPCServer Server;
private OPCGroups Groups;

Server=new OPCServer();
Server.Connect("KEPware.KEPServerEx.V4",null);//连接OPC服务器,这时将启动OPC服务器(就是下载的那个软件)
Groups=Server.OPCGroups;
int i;
i=Groups.Count;//<-在这个就会出现conlinfly所所描述的问题


回复
colinfly 2002-05-29
没人会吗?
回复
qqchen79 2002-05-29
由完整的程序吗?
回复
colinfly 2002-05-28
并非编译出错,是运行时出错。在没有加InvokeMember这句之前,运行到第三句(i=Groups.Count;)会出错.加了InvokeMember这句,运行到第三句(i=Groups.Count;)就没问题了。你们碰到过这种问题吗?
回复
qqchen79 2002-05-27
Reflection是运行期间类型检查,所以没运行没错;而直接调用是编译期间类型检查,所以报错;仅此而已。
回复
rengo 2002-05-27
但是加没加InvokeMember这句都可以通过编译
回复
rengo 2002-05-27
我想colinfly (Colin)的意思是:没有加InvokeMember这句之前,运行到第三句(i=Groups.Count;)会出错.加了InvokeMember这句,运行到第三句就没问题了
回复
colinfly 2002-05-26
不一定是漏洞,但肯定有一些小问题。
回复
xdev 2002-05-26
t.InvokeMember 执行后的结果是Object

当然要cast 了
回复
yinjialiang 2002-05-26
老兄,你写得乱七八糟的,不过若真是一个漏洞,赶快向微软反映吧,听说有奖的
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2002-05-26 04:49
社区公告

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