Вопрос

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

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

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

Это было полезно?

Решение

Из MSDN :

  

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

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

Другие советы

Ответ здесь :

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top