¿Cómo funciona el MethodImplAttribute en .NET?
-
06-07-2019 - |
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.
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 enString
,GC
y Las clases de matemáticas están marcadas comoInternalCall
. Como habrás notado,Guid.CompleteGuid
también es unInternalCall
.