Est-il possible de déduire qu'un objet ParameterInfo fait référence à un pointeur de fonction contenant des types de paramètres gérés?
-
05-07-2019 - |
Question
J'utilise réflexion pour examiner la déclaration de méthode suivante et je me demande s'il est possible de déterminer que le seul paramètre de la méthode est un pointeur de fonction.
public ref class T
{
public:
void foo(Int32 (*)(String^, array<TimeSpan>^)) { }
};
Lors de l'inspection de l'objet ParameterInfo
pour le paramètre de toto
, il indique que le type du paramètre est IntPtr
; cela a du sens, car un pointeur de fonction n’est pas un type CLR natif.
Étant donné que le pointeur de fonction ne contient que des types de paramètres gérés, j'espérais obtenir un contexte supplémentaire dans ParameterInfo
. Je ne vois pas de propriétés ni d'attributs dans ParameterInfo
et dans le type
pouvant m'aider à distinguer cette instance IntPtr
en tant que pointeur de fonction - existe-t-il tout?
La solution
Après réflexion, je suis persuadé que cela n’est pas possible. Puisque l’argument de la fonction toto
est un pointeur natif , le système de réflexion géré ne peut pas voir au-delà de cette couche et présente toujours l’argument sous la forme suivante: IntPtr
.