2011-07-20 45 views
9

我有以下簡單的代碼:爲什麼Visual Studio不允許我插入Type.GetType()?

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

     Console.WriteLine(t.FullName); 
    } 
} 

我試圖調試到Type.GetType()方法,但在方法調試程序跳過即使使用「步入」。我已經爲.NET Framework類啓用了調試功能,並且調試到其他框架方法中工作正常。爲什麼調試器不允許我採用這種特殊的方法?

回答

8

因爲Type.GetType()被內聯到這樣的:

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

換句話說,該方法被用C++實現的CLR內部。 InternalCall屬性值是關鍵。參考源中不提供CLR的源代碼。您可以使用SSCLI20 source code作爲參考,這對於CLR源來說是相當不錯的匹配,但您不能相信它是完全準確的,它不再被維護。 clr/src/vm/ecall.cpp源代碼文件包含從InternalCall名稱到C++函數名稱的映射。

相關問題