首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用System.Reflection

使用System.Reflection
EN

Stack Overflow用户
提问于 2010-11-26 13:31:37
回答 1查看 194关注 0票数 2

让我们考虑一下im有一个名为AAA的应用程序。现在,我正在加载一个名为BBB.The的程序集,其中包含事件和委托的声明。BBB中的事件处理程序在AAA中可用。加载程序集BBB时,我需要在AAA中添加事件的处理程序。当事件在BBB中发生时,AAA中的处理程序方法应该会自动执行。如何做到这一点..........?

我在AAA中像dis一样编码

代码语言:javascript
运行
复制
Assembly tstComponent = Assembly.LoadFile(BBB);
            Type Global = tstComponent.GetType(ClassInBBB, false, true);
if (Global != null)
            {

                EventInfo l_objevent = Global.GetEvent("OnGetdelInBBB");
                Type l_objEveType = l_objevent.EventHandlerType;
                Type Dis = Assembly.GetExecutingAssembly().GetType("AAA", false, true);
                MethodInfo l_method = Dis.GetMethod("HandlerinAAA");
                Delegate d = Delegate.CreateDelegate(l_objEveType, l_method);//Getting argument bind exception in this line
                MethodInfo addHandler = l_objevent.GetAddMethod();
                Object[] addHandlerArgs = { d };
                addHandler.Invoke(Dis, addHandlerArgs);

             }   

请帮帮我。提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-26 15:19:16

请参阅How to: Hook Up a Delegate Using Reflection

在您的代码中,示例状态为异常-这可能发生在number of reasons上,但我的直觉告诉我,这是因为方法签名不正确。您可能还想尝试a different overload,它接受对象作为第二个参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4282746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档