Wie funktioniert die MethodImplAttribute Arbeit in .NET?
-
06-07-2019 - |
Frage
Ich war etwas Framework-Code zu untersuchen (die System.AppDomain.GetDynamicDir-Methode) und das war alles der Assembler zeigte:
[MethodImpl(MethodImplOptions.InternalCall)]
private extern string GetDynamicDir();
Was passiert, wenn diese Methode aufgerufen wird? Ich habe nicht dieses spezielle Verfahren bedeuten, aber Methoden mit diesem Attribute im Allgemeinen.
Lösung
MSDN :
MethodImplOptions.InternalCall : Gibt eine interne Anruf. Ein interner Anruf ist ein Anruf an eine Verfahren, die innerhalb der durchgeführt wird Common Language Runtime selbst.
Also im Grunde die CLR eine eigene Implementierung dieses Verfahrens stellt (was wahrscheinlich in nativen Code ist), weshalb man es nicht in dem Disassembler sehen kann.
Andere Tipps
hier :
(...)
MethodImplOptions.InternalCall
wird verwendet, in Verbindung mit extern das zu sagen, Laufzeit, die das Verfahren implementiert ist, intern innerhalb des Systems selbst. Dies ist für viele der Kern .NET getan Framework-Methoden, die besser serviert von in umgesetzt nicht verwalteten Code. Zum Beispiel sind viele von die Methoden auf dieString
,GC
, und Math Klassen sind markiert alsInternalCall
. Wie Sie bemerkt haben,Guid.CompleteGuid
ist auch einInternalCall
.