是非之地

博客园首席处男所在的小窝

 

2011年3月24日

MissingMethodException

一个很恶心的问题啊。
纠结了我很久。

我这里做一个插件类型的东西。

比如, 一个窗体叫MainForm,
然后一个接口叫IPlugIn。

然后IPlugIn在载入的时候调用IPlugIn.OnLoad方法。

我写了一个IPlugIn, 他在OnLoad的时候, 会自动在MainForm里面添加一个菜单。

于是我就在MainForm类上加了一个AddMenuItem的方法。

然后呢, MainForm我可以通过一些办法拿到, 但是拿到的时候是Form类型, 而不是MainForm类型。

所以要as一下, 然后调用MainForm上的方法。

大概就是这么个结构。

好, 问题来了:

visual studio不知道抽什么疯, 每次调用的时候, 都提示我:
MissingMethodException, 在MainForm里面没有找到AddMenuItem这么个方法。

我靠~

当然了, 如果把exe和dll都拿出来直接跑, 是没问题的。
只有visual studio调试的时候会出问题。

但是没有调试功能, 下面的东东我怎么写啊?

=。=

最后各种绕法都试过了。
如果删除整个代码文件夹, 重新从vss获取, 然后重新编译, 就OK了。
但是一旦Form有点更改, 就又完蛋了。。。。。

so, 最后想了这么个办法:

定义了一个IMainForm接口, 将方法加在这个接口上。

然后让MainForm实现这个接口。
然后我调用的时候, 直接调用接口方法。

大家知道, 这个更改和没改是一样的。 因为还是在调用这个方法, 只不过是用接口过去的而已。

可是!

丫的visual studio这次就不报错了!!!

为什么捏?

因为我用的是借口, 而不是as, 它实在是“不好意思”告诉我说它找不到!!!

囧rz visual studio你怎么可以这么可爱。。。

我恨死你了!

posted @ 2011-03-24 15:50 undefined 阅读(135) 评论(1) 编辑

导航

统计

公告