Question

J'enquêtais sur un code d'infrastructure (la méthode System.AppDomain.GetDynamicDir) et c'était tout ce que l'assembleur a montré:

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

Que se passe-t-il lorsque cette méthode est appelée? Je ne parle pas de cette méthode spécifique, mais des méthodes avec cet attribut en général.

Était-ce utile?

La solution

De MSDN :

  

MethodImplOptions.InternalCall : spécifie un paramètre interne.   appel. Un appel interne est un appel à un   méthode qui est mise en œuvre dans le   Common Language Runtime lui-même.

En gros, le CLR fournit sa propre implémentation de cette méthode (qui est probablement en code natif), raison pour laquelle vous ne pouvez pas la voir dans le désassembleur.

Autres conseils

Répondez à ici :

  

(...)    MethodImplOptions.InternalCall est utilisé   en conjonction avec extern pour dire la   runtime que la méthode est implémentée   en interne au sein du système lui-même.   Ceci est fait pour bon nombre des principaux .NET   Des méthodes de cadre qui sont meilleures   servi par être mis en œuvre dans   code non géré. Par exemple, beaucoup de   les méthodes de la chaîne , GC , et   Les cours de mathématiques sont marqués comme    Appel interne . Comme vous l'avez remarqué,    Guid.CompleteGuid est également un    Appel interne .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top