Что такое тип<Module>?
Я использую Mono.Cecil для чтения сборки, созданной Regex.CompileToAssembly()
, Когда я перебираю типы, в корневом пространстве имен есть один тип с именем <Module>
, Тип не имеет базового типа. Что это за тип? Это какой-то артефакт Mono.Cecil или что-то, что на самом деле является реальной частью сборок.NET? Какую роль это играет?
1 ответ
<Module>
type является заполнителем для объявлений, которые не соответствуют модели CLI. Обычно актуально только для сборок в смешанном режиме, содержащих как код, написанный на управляемом языке, так и неуправляемый, такой как C или C++. Пусто для чисто управляемых сборок.
Эти языки поддерживают свободные функции и глобальные переменные. CLR не поддерживает это напрямую, методы и переменные всегда должны быть членами типа. Таким образом, генератор метаданных использует простой трюк, он создает фальшивый тип для размещения таких функций и переменных. Название этого поддельного типа <Module>
, Он всегда имеет внутреннюю доступность, чтобы скрыть участников. Существует только один из этих типов, его RID всегда равен 1.
Исходный код CLR называет его "Глобальный класс".