Вопрос

Есть в любом случае, чтобы проверить, использует ли метод pinvoke? Я зацикливаю все методы в сборе с использованием методика метода, но я хочу проверить, использует ли метод pinvoke. Вот код, который я использую:

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

Также, если это возможно, как можно существовать, я могу проверить для используемой DLL и функции / въездную точку, которая называется?

Это было полезно?

Решение

Вы можете проверить, будет ли метод украшен dlliMportattribute .Если это так, это использует pinvoke.

foreach (MethodBase methodBase in mtd.GetType().GetMethods())
{
    if (methodBase.CustomAttributes.Any(cad => cad.AttributeType == typeof(DllImportAttribute))
    {
         // Method is using PInvoke
    }
}
.

Другие советы

Вы можете использовать этот метод расширения:

    public static bool IsPinvoke(this MethodBase method)
    {
        return method.Attributes.HasFlag(MethodAttributes.PinvokeImpl);
    }
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top