Ответ 1
Если вы сделаете что-то вроде:
Type t = typeof(string);
Затем компилятор компилирует бит typeof(string)
в команду ldtoken MSIL, а затем вызывает Type.GetTypeFromHandle, чтобы получить экземпляр класса Type
.
Type.GetTypeFromHandle
реализуется средой выполнения (поэтому она помечена атрибутом MethodImplOptions.InternalCall). Вы можете посмотреть исходный код на моно для того, как он фактически реализован, но вам в основном нужно понять всю систему метаданных, чтобы понять, как Type
и друзья работают внутри...