Averiguar si un metodo esta suscrito a un metodo

09/11/2006 - 15:57 por kylix2001 | Informe spam
Buenas tardes a todos :

Me gustaria saber si existe alguna manera de comprobar si un metodo esta
suscrito a un evento.

La situacion es algo extraña ,hice un Add-in para Word 2003 y que añade una
barra y un boton.
Pero parecer ser que despues de pulsar el boton en dos ocasiones, el evento
"Click" no dispara el metodo que asocie.

Alguna sugerencia?

Alguien sabe si Office posee algun sistema para ver problemas que pueda causarle
un Addin, me refiero a un log o algo asi.



Gracias por todo.
 

Leer las respuestas

#1 Alberto Poblacion
09/11/2006 - 20:28 | Informe spam
"kylix2001" wrote in message
news:
Me gustaria saber si existe alguna manera de comprobar si un metodo esta
suscrito a un evento.



Lo que te voy a poner a continuación no lo he probado. Son símplemente
unas ideas teóricas deducidas a partir de la información de los manuales,
pero tendrás que experimentar con ello; no sé si funciona tal como te
indico:

Aunque los delegados sí que permiten enumerar la lista de métodos
conectados, los eventos en cambio no tienen directamente esa funcionalidad.
Pero si tienes acceso a la implementación del evento, puedes extraer su
delegado declarándolo expresamente e implementando el accessor-list del
evento para que las suscripciones del evento se almacenen en tu delegado:

private Delegate1 delegadoDelEvento;
public event Delegate1 Event1
{
add
{
delegadoDelEvento+=value;
}
remove
{
delegadoDelEvento-=value;
}
}

No es que sea una técnica muy elegante, pero no he encontrado otra forma
de extraer el delegado de un evento. Si alguien que sepa más que yo tiene
alguna alternativa mejor, que la diga.

Una vez que tienes el delegado, se puede enumerar la lista de las
funciones conectadas llamado a GetInvocationList():

Delegate[] listaDeDelagados = delegadoDelEvento.GetInvocationList();
for (int i = 0; i < DelegateList.Length; i++) {
//listaDeDelagados[i].Method y .Target indican el método de destino
}

Preguntas similares