É possível inferir que um objeto ParameterInfo refere-se a um ponteiro de função que contém tipos de parâmetros gerenciados?
-
05-07-2019 - |
Pergunta
Eu estou usando a reflexão para examinar a seguinte declaração de método e estou querendo saber se é possível determinar que o único parâmetro do método é um ponteiro de função.
public ref class T
{
public:
void foo(Int32 (*)(String^, array<TimeSpan>^)) { }
};
Ao inspecionar o objeto ParameterInfo
para o parâmetro de foo
, mostra que o tipo do parâmetro é IntPtr
; isso faz sentido uma vez que um ponteiro de função não é um tipo CLR nativo.
Uma vez que o ponteiro de função contém apenas conseguiu tipos de parâmetros, eu estava esperando para obter algum contexto extra no ParameterInfo
. Eu não vejo quaisquer propriedades ou atributos em ParameterInfo
e Type
que podem me ajudar a distinguir esta instância IntPtr
como um ponteiro de função - há alguma
Solução
Depois de alguma reflexão, eu estou muito certo de que este não é possível. Desde o argumento da função para foo
é uma nativa ponteiro, a gerenciada sistema de reflexão não pode ver além dessa camada e sempre apresentar o argumento como IntPtr
.