2015-05-19 2 views
0

Как узнать указатель на экземпляр, в котором были запущены события? Я использовал «объект отправителя» в качестве первого параметра события, и я его бросил. но нет таких свойств, как «Тег», которые помогают мне различать разные компоненты.Как узнать указатель на экземпляр, в котором были запущены события

вот мой пример кода:

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. Спасибо за любую помощь ...

ответ

0

Я не уверен, чего вы пытаетесь достичь, и если это действительно отвечает на ваш вопрос, но поскольку каждый элемент является другим экземпляром, у них должно быть другое значение GetHashCode():

obj.GetHashCode() 
+0

Доза GetHashCode() имеет разное значение для разных экземпляров, конечно? доза имеет то же значение каждый раз, когда его огонь событий? – Elahe

+0

Зачем вам нужно знать, какой объект вызвал событие? –

+0

@Elahe Это зависит от реализации 'SMSCclientSMPP'. Вы можете прочитать документацию по ссылке, которую я предоставил, и проверить, переопределен ли этот метод в классе с помощью декомпилятора. –

-1

Я не знаю, о SMSCclientSMPP, но самый простой способ достичь этого было бы обернуть SMSCclientSMPP создания пользовательского класса с новой категории собственности или ID для идентификации этих объектов.

Все остальное должно оставаться неизменным, вы просто замените SMSCclientSMPP своим новым классом. Конечно, это будет работать, только если SMSCclientSMPP можно унаследовать.

Смежные вопросы