質問

メソッドがPinvokeを使用しているかどうかを確認するのはどうしてもありますか? MethodBaseを使用してアセンブリ内のすべてのメソッドをループインしていますが、メソッドがPinVokeを使用しているかどうかを確認します。 これが私が使っているコードです:

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

も可能な場合もあれば、使用されているDLLと呼ばれる機能/エントリポイントを確認できる方法が可能ですか?

役に立ちましたか?

解決

メソッドが 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