Как работает метод MethodImplAttribute в.NET?

Я исследовал некоторый каркасный код (метод System.AppDomain.GetDynamicDir), и это было все, что показал ассемблер:

[MethodImpl(MethodImplOptions.InternalCall)]
private extern string GetDynamicDir();

Что происходит, когда этот метод вызывается? Я имею в виду не этот конкретный метод, а методы с этим атрибутом в целом.

2 ответа

Решение

Из MSDN:

MethodImplOptions.InternalCall: указывает внутренний вызов. Внутренний вызов - это вызов метода, который реализован в самой общеязыковой среде выполнения.

Таким образом, в основном, CLR предоставляет свою собственную реализацию этого метода (которая, вероятно, в собственном коде), поэтому вы не можете увидеть его в дизассемблере.

Ответ здесь:

(...) MethodImplOptions.InternalCall используется вместе с extern, чтобы сообщить среде выполнения, что метод реализован внутри самой системы. Это сделано для многих основных методов.NET Framework, которые лучше обслуживаются, будучи реализованными в неуправляемом коде. Например, многие из методов на String, GC и математические классы помечены как InternalCall, Как вы заметили, Guid.CompleteGuid также InternalCall,

Другие вопросы по тегам