¿Es posible inferir que un objeto ParameterInfo se refiere a un puntero de función que contiene tipos de parámetros administrados?
-
05-07-2019 - |
Pregunta
Estoy utilizando la reflexión para examinar la siguiente declaración de método y me pregunto si es posible determinar que el único parámetro del método es un indicador de función.
public ref class T
{
public:
void foo(Int32 (*)(String^, array<TimeSpan>^)) { }
};
Al inspeccionar el objeto ParameterInfo
para el parámetro foo
, muestra que el tipo de parámetro es IntPtr
; esto tiene sentido ya que el puntero de una función no es un tipo CLR nativo.
Dado que el puntero a la función solo contiene tipos de parámetros administrados, esperaba obtener algún contexto adicional en ParameterInfo
. No veo ninguna propiedad o atributo en ParameterInfo
y Type
que pueda ayudarme a distinguir esta instancia de IntPtr
como un indicador de función. alguna?
Solución
Después de pensarlo, estoy muy seguro de que esto no es posible. Dado que el argumento de la función para foo
es un puntero nativo , el sistema de reflexión administrado no puede ver más allá de esa capa y siempre presentará el argumento como IntPtr
.