O'Reilly logo

C# in a Nutshell by Peter Drayton, Ted Neward, Ben Albahari

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required