Empiezo a trabajar con objetos dinámicos en .Net y no puedo encontrar la manera de hacer algo.Obtener el tipo genérico de llamada al método en el objeto dinámico
Tengo una clase que hereda de DynamicObject y anulo el método TryInvokeMember.
p. Ej.
class MyCustomDynamicClass : DynamicObject
{
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
// I want to know here the type of the generic argument
}
}
Y dentro de ese método, quiero saber el tipo (si existe) de los argumentos genéricos en la invocación.
p. Ej. Si invoco el siguiente código, que desea obtener el valor de System.Boolean y System.Int32 dentro del método overrided de mi objeto dinámico
dynamic myObject = new MyCustomDynamicClass();
myObject.SomeMethod<bool>("arg");
myObject.SomeOtherMethod<int>("arg");
Actualmente, si pongo un punto de interrupción dentro del método overrided puedo conseguir el nombre del método que se invoca ("SomeMethod" y "SomeOtherMethod", y también los valores de los argumentos, pero no los tipos genéricos).
¿Cómo puedo obtener estos valores?
Gracias!
Lo más probable es que necesite buscar el método utilizando la reflexión. MethodInfo proporciona acceso a los argumentos de tipo genérico. –
El problema es que el método no existe, solo tengo acceso al objeto de enlace, que tiene una propiedad CallInfo, que no tiene ninguna información de genéricos. – willvv
Ya sabes, he estado probando muestras de esto por un tiempo, y tampoco puedo encontrar dónde está la información genérica. Esta es realmente una muy buena pregunta. – Tejs