如何知道触发事件的实例的指针
本文关键字:实例 指针 事件 何知道 | 更新日期: 2023-09-27 17:49:43
如何知道触发事件的实例的指针?我使用"对象发送者"作为事件的第一个参数,并对其进行强制转换。但是没有任何像"Tag"这样的属性可以帮助我区分不同的组件。
下面是我的示例代码:SMSCclientSMPP[] smsCClientSMPP = new SMSCclientSMPP[10];
for (int i = 0; i < 10; i++)
{
smsCClientSMPP[i] = new SMSCclientSMPP();
smsCClientSMPP[i].OnTcpDisconnected += smsCclientSMPP_OnTcpDisconnected;
}
private void smsCclientSMPP_OnTcpDisconnected(object sender, tcpDisconnectedEventArgs e)
{
SMSCclientSMPP obj = (SMSCclientSMPP)sender;
// obj dosent have Tag field.
}
正如我所说的,obj
没有任何使其与其他属性不同的属性。那么我怎么知道这个事件是由我的smsCClientSMPP
数组的哪个项目触发的呢?
我不确定你想要实现什么,也不知道这是否实际上回答了你的问题,但由于每个项目是一个不同的实例,它们应该有不同的GetHashCode()
值:
obj.GetHashCode()
我不知道SMSCclientSMPP,但实现它的最简单方法是包装SMSCclientSMPP,创建一个带有新属性Tag或ID的自定义类来标识这些对象。
其他一切应该保持不变,您只需将SMSCclientSMPP替换为您的新类。当然,这只有在SMSCclientSMPP可以继承的情况下才能工作。