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

9

I've got the following simple code:

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

        Console.WriteLine(t.FullName);
    }
}

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

8

因为Type.GetType()是内联到这里的:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接