如何知道指向触发事件的实例的指针

时间:2015-05-19 05:27:07

标签: c# events

我如何知道指向触发事件的实例的指针?我使用"对象发送者"作为事件的第一个参数,我投了它。但是没有像" 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数组的哪些项引起的。 谢谢你的帮助...

2 个答案:

答案 0 :(得分:0)

我不确定您要尝试实现的目标,也不确定这实际上是否回答了您的问题,但由于每个项目都是不同的实例,因此它们应具有不同的GetHashCode()值:< / p>

obj.GetHashCode()

答案 1 :(得分:-1)

我不了解SMSCclientSMPP,但实现它的最简单方法是包装SMSCclientSMPP创建一个带有新属性Tag或ID的自定义类来识别这些对象。

其他所有内容应该保持不变,您只需将SMSCclientSMPP替换为您的新课程。当然,这只有在可以继承SMSCclientSMPP时才有效。