gpt4 book ai didi

c# - 从事件处理程序确定发件人对象

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

我正在使用引发事件的类,该事件的事件处理程序的签名中不包含发送者对象的参数。

我如何从事件处理程序中确定引发事件的对象?我如何获得对此对象的引用?可以使用反射来完成吗?

提前致谢。

最佳答案

我能想到的最好的方法是使用类似于适配器模式的东西。您基本上会在代码中创建一个类来包装您正在构建的 COM 类,它包含自己的事件,可以提供更详细的信息。您的类的每个实例都将创建自己的 COM 类实例,处理 COM 事件,并将自己的事件引发给代码的其余部分。因此,您不知道究竟是哪个 COM 类引发了该事件,但您确实知道它是您自己的哪个类实例。

但是,这种类型的解决方案在很大程度上取决于您要实现的目标。如果您只是想获得更好的调试信息,这是一个不错的选择,但如果您试图将其他人的库的各个部分连接在一起,那么在很多情况下这将无济于事。

public class MyClass
{
private COMClass instance;
public event EventHandler<BetterEventArgs> MyBetterEvent;

public MyClass()
{
instance.event += new EventHandler(Handle_COM_event); // ... or whatever
}

public void Handle_COM_event(EventArgs)
{
if(MyBetterEvent != null) MyBetterEvent(this, new BetterEventArgs());
}

}

关于c# - 从事件处理程序确定发件人对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6423351/

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