为什么Visual Studio不允许我进入Type.GetType()?

时间:2011-07-20 16:19:16

标签: .net visual-studio debugging

我有以下简单的代码:

class Program
{
    static void Main(string[] args)
    {
        var t = Type.GetType("System.Reflection.Assembly");

        Console.WriteLine(t.FullName);
    }
}

我正在尝试调试Type.GetType()方法,但即使使用“Step Into”,调试器也会跳过该方法。我已经为.NET Framework类启用了调试,并且对其他框架方法的调试工作正常。为什么调试器不允许我进入这个特定的方法呢?

1 个答案:

答案 0 :(得分:8)

因为Type.GetType()内联到此:

[MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical]
public extern Type GetType();

换句话说,该方法是在CLR内部的C ++中实现的。 InternalCall属性值是键。参考源不提供CLR的源代码。您可以使用SSCLI20 source code作为参考,它与CLR源非常匹配,但您不能相信它完全准确,不再维护它。 clr / src / vm / ecall.cpp源代码文件包含从InternalCall名称到C ++函数名称的映射。