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 VB.NET 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
   Overridable Public Sub BeginCatchBlock(
        ByVal exceptionType As Type) 
   Overridable Public Sub BeginExceptFilterBlock() Overridable Public Function ...

Get VB.NET Core Classes in a Nutshell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.