Можно ли сделать вывод, что объект ParameterInfo ссылается на указатель функции, содержащий типы управляемых параметров?
-
05-07-2019 - |
Вопрос
Я использую рефлексию для изучения следующего объявления метода, и мне интересно, можно ли определить, что единственным параметром метода является указатель на функцию.
public ref class T
{
public:
void foo(Int32 (*)(String^, array<TimeSpan>^)) { }
};
При проверке объекта ParameterInfo
для параметра foo
он показывает, что типом параметра является IntPtr
; это имеет смысл, поскольку указатель на функцию не является собственным типом CLR.
Поскольку указатель функции содержит только управляемые типы параметров, я надеялся получить дополнительный контекст в ParameterInfo
. Я не вижу никаких свойств или атрибутов в ParameterInfo
и Type
, которые могли бы помочь мне отличить этот экземпляр IntPtr
как указатель на функцию - есть ли любой?
Решение
Подумав, я уверен, что это невозможно. Поскольку аргумент функции для foo
является указателем native , система отражения managed не может видеть за этим слоем и всегда будет представлять аргумент как <код> IntPtr код>.