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 C# equivalent of a 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 method void BeginCatchBlock( Type exceptionType); public virtual method void BeginExceptFilterBlock(); public virtual method Label ...