gpt4 book ai didi

c# - 使用 System.Reflection

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:14 25 4
gpt4 key购买 nike

让我们假设我有一个名为 AAA 的应用程序。现在我正在加载一个名为 BBB 的程序集。Aseembly BBB 正在声明事件和委托(delegate)。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);

}

请帮帮我。提前致谢

最佳答案

参见 How to: Hook Up a Delegate Using Reflection

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

关于c# - 使用 System.Reflection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4282746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com