메서드가 Pinvoke를 사용하는지 확인하십시오
-
12-12-2019 - |
문제
메소드가 Pinvoke를 사용하는지 확인하기 위해 어쨌든 있습니까? 나는 메소드베이스를 사용하여 어셈블리의 모든 메소드를 반복하고 있지만 메소드가 Pinvoke를 사용하는지 확인하고 싶습니다. 다음은 내가 사용하는 코드입니다 :
foreach (MethodBase bases in mtd.GetType().GetMethods())
{
//check if the method is using pinvoke
}
.
또한 사용중인 DLL을 확인할 수있는 방법과 호출되는 함수 / entrypoint를 확인할 수있는 방법이 가능합니다.
해결책
메소드가 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);
}
. 제휴하지 않습니다 StackOverflow