System.Reflection.Emit.OpCodes.Ldvirtftn Field

Pushes an unmanaged pointer (type native int) to the native code implementing a particular virtual method associated with a specified object onto the evaluation stack.

Syntax

public static readonly OpCode Ldvirtftn

Remarks

The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:

FE 07 < T >

ldvirtftn method

Pushes the pointer to an object's virtual method method on the stack.

The stack transitional behavior, in sequential order, is:

[The 'ordered' type of list has not been implemented in the ECMA stylesheet.]

The resulting unmanaged pointer pushed onto the stack by the ldvirtftn instruction can be called using the OpCodes.Calli instruction if it references a managed method (or a stub that transitions from managed to unmanaged code).

The unmanaged pointer points to native code using the calling convention specified by in the metadata token method. As a result, the method pointer can be passed to unmanaged native code (for example, as a callback routine) if that routine expects the corresponding calling convention.

The following ILGenerator.Emit(OpCode) method overload can use the ldvirtftn opcode:

  • ILGenerator.Emit(OpCode, MethodInfo)

Requirements

Namespace: System.Reflection.Emit
Assembly: mscorlib (in mscorlib.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0, 4.0.0.0