Pregunta

¿Hay alguna otra parte para verificar si un método usa PineVoke? Estoy en bucle a través de todos los métodos en un conjunto usando METHEBASE, pero quiero verificar si el método está usando PineVoke. Aquí está el código que estoy usando:

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

Además, si es posible, ¿cómo puede ver la forma en que puedo verificar la DLL que se está utilizando y la función / punto de entrada que se llama?

¿Fue útil?

Solución

Puede verificar si se decore un método con dllimportattribute .Si es así, está usando PineVoke.

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

Otros consejos

Puede usar este método de extensión:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top