无论如何检查方法是否使用PInvoke? 我正在使用MethodBase循环遍历程序集中的所有方法,但我想检查该方法是否使用PInvoke。 这是我正在使用的代码:
foreach (MethodBase bases in mtd.GetType().GetMethods())
{
//check if the method is using pinvoke
}
另外,如果有可能,我怎样才能检查正在使用的DLL和被调用的函数/入口点?
答案 0 :(得分:5)
您可以检查方法是否使用DllImportAttribute进行修饰。如果是这样,那就是使用PInvoke。
foreach (MethodBase methodBase in mtd.GetType().GetMethods())
{
if (methodBase.CustomAttributes.Any(cad => cad.AttributeType == typeof(DllImportAttribute))
{
// Method is using PInvoke
}
}
答案 1 :(得分:2)
您可以使用此扩展方法:
public static bool IsPinvoke(this MethodBase method)
{
return method.Attributes.HasFlag(MethodAttributes.PinvokeImpl);
}