Я изучаю инфраструктуру общеязыкового языка .NET, и прежде чем углубиться в подробности компилятора, который я собираюсь написать, я хочу быть уверенным, что определенные функции доступны.Чтобы сделать это, я должен понять, как они работают.
Одна особенность, в которой я не уверен, - это внедрение .NET Primary Interop Assembly.Я не совсем уверен, как .NET встраивает только те типы, которые вы используете, по сравнению с типами, которые предоставляются типами, которые вы используете.Из небольшого исследования, которое я провел в этом, я заметил, что он испускает простой интерфейс, который использует методы vtable gap, где формат имени метода VtblGap {0} _ {1}, где {0} - этоиндекс промежутка и {1} - размер члена промежутка.Эти методы помечены как rtspecialname и specialname.Является ли это точным или нет, вопрос в этом.
Предполагая, что вышеизложенное верно, как бы я мог получить необходимую информацию для встраивания похожих метаданных в полученное приложение?
Из чего яМожно сказать, вы можете заказать объекты MemberInfo, полученные через их токены метаданных, для заказа, а информация о показе будет получена через атрибуты из сборки взаимодействия.Больше всего меня смущает область импортируемых интерфейсов, которые, по-видимому, не имеют прямой корреляции с другими встроенными типами, последовательными индексированными интерфейсами, которые, похоже, существуют по причинам контроля версий.Их включение основано на их индексации или есть какая-то другая логика?Примером является Microsoft.Office.Interop.Word, когда вы добавляете документ в приложение и, делая с ним что-то, импортируете документ, его события и т. Д.
Здесь мы надеемся, что кто-тоthe-know может подсказать мне, что еще может быть вовлечено во встраивание этих типов.