Pregunta

Estaba investigando algún código de marco (el método System.AppDomain.GetDynamicDir) y esto fue todo lo que mostró el ensamblador:

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

¿Qué sucede cuando se llama a este método? No me refiero a este método específico, sino a métodos con este atributo en general.

¿Fue útil?

Solución

De MSDN :

  

MethodImplOptions.InternalCall : especifica un interno   llamada. Una llamada interna es una llamada a un   método que se implementa dentro del   Common Language Runtime en sí.

Entonces, básicamente, el CLR proporciona su propia implementación de este método (que probablemente esté en código nativo), por lo que no puede verlo en el desensamblador.

Otros consejos

Responda aquí :

  

(...)   MethodImplOptions.InternalCall se utiliza   en conjunto con extern para decirle al   tiempo de ejecución que se implementa el método   internamente dentro del propio sistema.   Esto se hace para muchos de los principales .NET   Métodos marco que son mejores   servido por ser implementado en   código no administrado Por ejemplo, muchos de   los métodos en String , GC y   Las clases de matemáticas están marcadas como   InternalCall . Como habrás notado,   Guid.CompleteGuid también es un   InternalCall .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top