2011-07-20 17 views
9

mam następujący prosty kod:Dlaczego program Visual Studio nie pozwala mi przejść do Type.GetType()?

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

     Console.WriteLine(t.FullName); 
    } 
} 

Ja próbuje debugowania do metody Type.GetType(), ale debugger przeskakuje nad metodą, nawet podczas korzystania z „Step Into”. Mam włączone debugowanie dla klas .NET Framework, a debugowanie do innych metod struktury działa dobrze. Dlaczego debugger nie pozwala mi wkroczyć w tę konkretną metodę?

Odpowiedz

8

Ponieważ Type.GetType() jest wstawiane do tego:

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

Innymi słowy, sposób jest realizowany w C++ wewnątrz CLR. Wartość atrybutu InternalCall jest kluczem. Kod źródłowy dla CLR nie jest dostępny w źródle odniesienia. Możesz użyć SSCLI20 source code jako odniesienia, jest to całkiem dobre dopasowanie dla źródła CLR, ale nie możesz ufać, że jest całkowicie dokładne, nie jest już utrzymywane. Plik kodu źródłowego clr/src/vm/ecall.cpp zawiera odwzorowania od nazw InternalCall do nazw funkcji C++.

Powiązane problemy