Pergunta

Eu estava investigando alguns código do framework (o método System.AppDomain.GetDynamicDir) e isso era tudo o montador mostrou:

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

O que acontece quando este método é chamado? Não me refiro a este método específico, mas os métodos com esse atributo em geral.

Foi útil?

Solução

A partir MSDN :

MethodImplOptions.InternalCall : Especifica um interno ligar. Uma chamada interna é uma chamada para um método que é implementado dentro do própria linguagem tempo de execução comum.

Então, basicamente, o CLR fornece sua própria implementação deste método (que é provavelmente em código nativo), razão pela qual você não pode vê-lo no desmontador.

Outras dicas

aqui :

(...) MethodImplOptions.InternalCall é usado em conjunto com extern para contar a tempo de execução que o método é implementado internamente dentro do próprio sistema. Isso é feito por muitos do núcleo .NET métodos de enquadramento que são melhores servido por ser implementado em código não gerenciado. Por exemplo, muitos dos os métodos no String , GC , e aulas de matemática são marcados como InternalCall . Como você percebeu, Guid.CompleteGuid é também um InternalCall .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top