我正在使用反射检查以下方法声明,并想知道是否可以确定方法的唯一参数是函数指针。

public ref class T
{
public:
    void foo(Int32 (*)(String^, array<TimeSpan>^)) { }
};

当检查 foo 的参数的 ParameterInfo 对象时,它显示参数的类型是 IntPtr ;这是有道理的,因为函数指针不是本机CLR类型。

由于函数指针只包含托管参数类型,我希望在 ParameterInfo 中获得一些额外的上下文。我没有在 ParameterInfo Type 中看到任何可以帮助我将这个 IntPtr 实例区分为函数指针的属性或属性 - 是否存在任何?

有帮助吗?

解决方案

经过一番思考后,我非常确定这是不可能的。由于 foo 的函数参数是 native 指针,因此托管反射系统无法超越该层,并始终将参数显示为<代码> IntPtr的

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top