Vérifiez si la méthode utilise Pinvoke
-
12-12-2019 - |
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é?
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