Primero, GetInvocationList()
no funcionará, porque quiero poder acceder a ellos desde fuera de la clase. Supongo que va a trabajar con magia de reflexión, y eso es lo que estoy tratando de resolver.¿Cómo puedo obtener una lista de los delegados subyacentes de un evento utilizando la reflexión?
Esto es lo que tengo ahora:
fooEventDispatcher.GetType().GetField("FooEvent", BindingFlags.Instance | BindingFlags.NonPublic);
var field = fieldInfo.GetValue(fooEventDispatcher);
yo sólo no saben qué hacer con field
. ¿Algunas ideas?
¿Puede indicarnos cuál es el objetivo de consultar la lista de llamadas? Dependiendo del propósito, puede haber una manera más fácil que la reflexión para obtener el resultado que desea. –
@Joel: Quiero probar la unidad de que un objeto se está suscribiendo a un evento. Probar el efecto secundario de la invocación no es una solución limpia. – ryeguy
¿Por qué GetInvocationList() no funciona? Es un método público y cualquiera desde el exterior puede llamar a ese método, a menos que su clase sea interna para el ensamblado. – ferosekhanj