Domanda

Stavo studiando del codice del framework (il metodo System.AppDomain.GetDynamicDir) e questo era tutto ciò che l'assemblatore mostrava:

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

Cosa succede quando viene chiamato questo metodo? Non intendo questo metodo specifico, ma metodi con questo attributo in generale.

È stato utile?

Soluzione

Da MSDN :

  

MethodImplOptions.InternalCall : specifica un interno   chiamata. Una chiamata interna è una chiamata a   metodo implementato all'interno di   Common Language Runtime stesso.

Quindi, in sostanza, il CLR fornisce la propria implementazione di questo metodo (che è probabilmente nel codice nativo), motivo per cui non è possibile vederlo nel disassemblatore.

Altri suggerimenti

Rispondi qui :

  

(...)   Viene usato MethodImplOptions.InternalCall   in collaborazione con extern per dire al   runtime che il metodo è implementato   internamente al sistema stesso.   Questo viene fatto per molti dei core .NET   Metodi quadro che sono migliori   servito da implementato in   codice non gestito. Ad esempio, molti di   i metodi su String , GC e   Le lezioni di matematica sono contrassegnate come    internalcall . Come hai notato,   Anche Guid.CompleteGuid è un    internalcall .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top