Проверьте, использует ли метод PInvoke
Есть ли способ проверить, использует ли метод PInvoke? Я перебираю все методы в сборке с использованием MethodBase, но я хочу проверить, использует ли метод PInvoke. Вот код, который я использую:
foreach (MethodBase bases in mtd.GetType().GetMethods())
{
//check if the method is using pinvoke
}
Также, если это возможно, как можно проверить, используется ли DLL и вызывается ли функция / точка входа?
2 ответа
Решение
Вы можете проверить, украшен ли метод с помощью 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);
}