В дополнение к ответу @SLaks, MethodImplOptions.InternalCall кратко описан здесь: ThreadPoolPriority и MethodImplAttribute .
По сути, InternalCall сообщает среде выполнения о необходимости проверки своих внутреннихтаблица поиска именованных функций.Эта таблица существует из-за исходного файла в коде среды выполнения, явно объявившего их при компиляции среды выполнения.В нем есть список указателей на функции для реализации всех внутренних вызовов:
static ECFunc gGuidFuncs[] = { {FCFuncElement("CompleteGuid", NULL, (LPVOID)GuidNative::CompleteGuid)}, {NULL, NULL, NULL} };
Это объявление сообщает среде выполнения, что тело метода для управляемого метода Guid.CompleteGuid на самом деле является родной функцией C ++ GuidNative :: CompleteGuid.В статье не очень ясно, как маршалинг работает в этом месте, но в целом это явно зависит от реализации во время выполнения, так как он а) объявляет тело функции [которое зависит от формата маршалинга] и б) выполняет необходимое маршалинг.