Question

existe-t-il de toute façon pour vérifier si une méthode utilise Pinvoke? Je suis en boucle à travers toutes les méthodes d'un assembly à l'aide de la méthodeBase, mais je veux vérifier si la méthode utilise Pinvoke. Voici le code que j'utilise:

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

De plus, si possible, comment peut-il y avoir une manière que je peux vérifier que la DLL étant utilisée et la fonction / point d'entrée appelé?

Était-ce utile?

La solution

Vous pouvez vérifier si une méthode est décorée avec dllimportattribute .Si oui, il utilise Pinvoke.

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

Autres conseils

Vous pouvez utiliser cette méthode d'extension:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top