2011-01-29 19 views
12

Estoy haciendo un trabajo de reflexión para un proyecto personal, y necesitaría acceder al tipo de devolución de un delegado a través de su objeto Type. Este es un pequeño meta, así que aquí hay un ejemplo.¿Cómo obtengo el tipo de devolución de un tipo delegado a través de la reflexión?

Type type = typeof(Func<Foo, Bar, Baz>); 
// ???? 
// Use reflection to come to the following expected result 
Type result = typeof(Baz); 

¿Cómo puedo hacer eso?

No tendré ninguna instancia de ese tipo para convertir a Delegate.

Respuesta

16

Una forma sería obtener un MethodInfo que represente el método Invoke del tipo de delegado, y luego recuperar el tipo de devolución del método.

var result = type.GetMethod("Invoke").ReturnType; 
Cuestiones relacionadas