4

如何extern使用反射确定方法是否为 ?

样品方法:

var mEnter = typeof(System.Threading.Monitor).GetMethod("Exit", BindingFlags.Static | BindingFlags.Public);
4

2 回答 2

8
var isExtern = (mEnter.MethodImplementationFlags
                    & MethodImplAttributes.InternalCall) != 0;
于 2013-11-04T13:26:04.057 回答
4

我不知道有什么直接的方法可以弄清楚,但我可以展示一个我使用过的技巧假设我们有一个包含外部方法的类

class MyClass
{
    [DllImport("kernel32.dll")]
    public static extern bool Beep(int ferequency, int duration);
    public static void gr()
    {
    }
    public void GG()
    {
    }
}

我们可以通过编写这段代码来检查外部方法

 var t = typeof(MyClass);
        var l = t.GetMethods();
        foreach (var item in l)
        {
            if (item.GetMethodBody() == null && item.IsStatic)
            {
                // Method is Extern
            }
        }
于 2013-11-04T13:34:51.853 回答