Name
ILGenerator
Synopsis
This class generates MSIL (Microsoft Intermediate Language)
instructions. You receive an ILGenerator object
from a
GetILGenerator method in a builder class. For
example, you can use the ConstructorBuilder.GetILGenerator( ) to create MSIL instructions for a constructor, or
MethodBuilder.GetILGenerator( ) to create MSIL
instructions for a method. Use BeginScope( ) and
EndScope( ) to start and stop a lexical scope.
To emit instructions, use the Emit( ) method. The
Emit( ) method requires an
OpCode object. The easiest way to supply this is
by using one of the constant fields from OpCodes,
as in myGenerator.Emit(OpCodes.Ret);.
EmitWriteLine( ) creates the MSIL code required to
call System.Console.WriteLine( ) with the supplied
variable. You can also define and mark labels in the instruction
stream (DefineLabel( ) and MarkLabel( )), emit an instruction for throwing an exception
(ThrowException( )), and define local variables
(DeclareLocal( )).
Emit error handling blocks with BeginExceptionBlock( ) and EndExceptionBlock( ) (which emits
the equivalent of a C# try statement),
BeginCatchBlock( ) (which emits the equivalent of
the catch statement), and
BeginFinallyBlock( ) (which emits the equivalent
of the finally statement). You must end the
exception block using EndExceptionBlock( ).
public class ILGenerator {
// Public Instance Methods
public virtual void BeginCatchBlock(Type exceptionType);
public virtual void BeginExceptFilterBlock( );
public virtual Label BeginExceptionBlock ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access