4

无论如何要检查方法是否使用 PInvoke ?我正在使用 MethodBase 遍历程序集中的所有方法,但我想检查该方法是否使用 PInvoke。这是我正在使用的代码:

 foreach (MethodBase bases in mtd.GetType().GetMethods())
 {
      //check if the method is using pinvoke
 }

另外,如果可能的话,有什么方法可以检查正在使用的 DLL 和正在调用的函数/入口点?

4

2 回答 2

5

您可以检查方法是否用DllImportAttribute修饰。如果是这样,它正在使用 PInvoke。

foreach (MethodBase methodBase in mtd.GetType().GetMethods())
{
    if (methodBase.CustomAttributes.Any(cad => cad.AttributeType == typeof(DllImportAttribute))
    {
         // Method is using PInvoke
    }
}
于 2012-10-01T16:27:48.687 回答
2

您可以使用此扩展方法:

    public static bool IsPinvoke(this MethodBase method)
    {
        return method.Attributes.HasFlag(MethodAttributes.PinvokeImpl);
    }
于 2012-12-19T15:20:12.773 回答