È possibile dedurre che un oggetto ParameterInfo si riferisce a un puntatore a funzione contenente tipi di parametri gestiti?
-
05-07-2019 - |
Domanda
Sto usando reflection per esaminare la seguente dichiarazione di metodo e mi chiedo se sia possibile determinare che l'unico parametro del metodo sia un puntatore a funzione.
public ref class T
{
public:
void foo(Int32 (*)(String^, array<TimeSpan>^)) { }
};
Quando si controlla l'oggetto ParameterInfo
per il parametro foo
, mostra che il tipo di parametro è IntPtr
; questo ha senso poiché un puntatore a funzione non è un tipo CLR nativo.
Poiché il puntatore a funzione contiene solo tipi di parametri gestiti, speravo di ottenere un contesto aggiuntivo nel ParameterInfo
. Non vedo alcuna proprietà o attributo in ParameterInfo
e Type
che possa aiutarmi a distinguere questa istanza IntPtr
come puntatore a funzione - ci sono qualsiasi?
Soluzione
Dopo aver riflettuto, sono molto sicuro che ciò non sia possibile. Poiché l'argomento della funzione foo
è un puntatore nativo , il sistema di riflessione gestito non può vedere oltre quel livello e presenterà sempre l'argomento come IntPtr
.