문제

메소드가 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);
    }
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top