让我们考虑一下im有一个名为AAA的应用程序。现在,我正在加载一个名为BBB.The的程序集,其中包含事件和委托的声明。BBB中的事件处理程序在AAA中可用。加载程序集BBB时,我需要在AAA中添加事件的处理程序。当事件在BBB中发生时,AAA中的处理程序方法应该会自动执行。如何做到这一点..........?
我在AAA中像dis一样编码
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);
}
请帮帮我。提前感谢
发布于 2010-11-26 15:19:16
请参阅How to: Hook Up a Delegate Using Reflection
在您的代码中,示例状态为异常-这可能发生在number of reasons上,但我的直觉告诉我,这是因为方法签名不正确。您可能还想尝试a different overload,它接受对象作为第二个参数。
https://stackoverflow.com/questions/4282746
复制相似问题