ILGenerator Třída

Definice

Generuje Microsoft pokyny jazyka MSIL (Intermediate Language).

public ref class ILGenerator abstract
public ref class ILGenerator
public ref class ILGenerator : System::Runtime::InteropServices::_ILGenerator
public abstract class ILGenerator
public class ILGenerator
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public class ILGenerator : System.Runtime.InteropServices._ILGenerator
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public class ILGenerator : System.Runtime.InteropServices._ILGenerator
type ILGenerator = class
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type ILGenerator = class
    interface _ILGenerator
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ILGenerator = class
    interface _ILGenerator
Public MustInherit Class ILGenerator
Public Class ILGenerator
Public Class ILGenerator
Implements _ILGenerator
Dědičnost
ILGenerator
Atributy
Implementuje

Poznámky

ILGenerator slouží ke generování těl metod pro metody a konstruktory v dynamických sestaveních (reprezentovaných třídami MethodBuilderConstructorBuilder ) a pro samostatné dynamické metody (reprezentované DynamicMethod třídou). Chcete-li získat ILGenerator, použijte ConstructorBuilder.GetILGenerator, DynamicMethod.GetILGeneratora MethodBuilder.GetILGenerator metody.

Jazyk MSIL se používá jako vstup kompilátoru JIT (just-in-time).

Warning

Pro rozhraní API ILGeneratoru, která vytváří metodu IL, neexistují žádná omezení, kromě základního ověřování. Pokud se pro výrobu IL používá nedůvěryhodný vstup:

  • Il a metadata můžou obsahovat tajné kódy poskytované příjemcem.
  • Il může být neplatný, například nemá vyvážené nabízení a pop opcode nebo neplatné operandy pro daný operační kód.
  • IL může obsahovat libovolný kód, který může mít například zablokování, nekonečnou rekurzi zásobníku nebo nekonečnou smyčku.
  • IL může načíst a spustit kód na libovolném jiném dosažitelné sestavení.

Takový kód může dělat cokoliv, co si přeje, když je metoda načtena a spuštěna. K ochraně před těmito ohroženími ILGenerator zabezpečení vyžaduje plně důvěryhodné prostředí s důvěryhodným vstupem.

Konstruktory

Name Description
ILGenerator()

Inicializuje novou instanci ILGenerator třídy.

Vlastnosti

Name Description
ILOffset

Získá aktuální posun v bajtech v microsoft intermediate language (MSIL) stream, který je generován .ILGenerator

Metody

Name Description
BeginCatchBlock(Type)

Začne blok zachycení.

BeginExceptFilterBlock()

Zahájí blok výjimky pro filtrovanou výjimku.

BeginExceptionBlock()

Začne blok výjimky pro nefiltrovanou výjimku.

BeginFaultBlock()

Zahájí blok chyby výjimky ve streamu Microsoft intermediate language (MSIL).

BeginFinallyBlock()

Zahájí konečně blok v instrukčním streamu jazyka MSIL (Microsoft intermediate language).

BeginScope()

Začíná lexikální obor.

CreateLabel(Int32)

Vytvoří s daným Label ID.

DeclareLocal(Type, Boolean)

Deklaruje místní proměnnou zadaného typu a volitelně připne objekt odkazovaný proměnnou.

DeclareLocal(Type)

Deklaruje místní proměnnou zadaného typu.

DefineLabel()

Deklaruje nový popisek.

Emit(OpCode, Byte)

Vloží zadaný instrukční a znakový argument do Microsoft zprostředkujícího jazyka (MSIL) instrukce.

Emit(OpCode, ConstructorInfo)

Vloží zadaný instrukční token a token metadat pro zadaný konstruktor do datového proudu Microsoft intermediate language (MSIL).

Emit(OpCode, Double)

Vloží zadaný instrukční a číselný argument do Microsoft zprostředkujícího jazyka (MSIL) instrukce.

Emit(OpCode, FieldInfo)

Vloží zadaný instrukční token a token metadat pro zadané pole do datového proudu Microsoft zprostředkujícího jazyka (MSIL).

Emit(OpCode, Int16)

Vloží zadaný instrukční a číselný argument do Microsoft zprostředkujícího jazyka (MSIL) instrukce.

Emit(OpCode, Int32)

Vloží zadaný instrukční a číselný argument do Microsoft zprostředkujícího jazyka (MSIL) instrukce.

Emit(OpCode, Int64)

Vloží zadaný instrukční a číselný argument do Microsoft zprostředkujícího jazyka (MSIL) instrukce.

Emit(OpCode, Label)

Umístí zadanou instrukci do datového proudu Microsoft zprostředkujícího jazyka (MSIL) a po dokončení oprav ponechá místo na zahrnutí popisku.

Emit(OpCode, Label[])

Umístí zadanou instrukci do datového proudu Microsoft zprostředkujícího jazyka (MSIL) a po dokončení oprav ponechá místo na zahrnutí popisku.

Emit(OpCode, LocalBuilder)

Umístí zadanou instrukci do datového proudu Microsoft intermediate language (MSIL) následovaný indexem dané místní proměnné.

Emit(OpCode, MethodInfo)

Vloží zadanou instrukci do datového proudu Microsoft intermediate language (MSIL) následovaný tokenem metadat pro danou metodu.

Emit(OpCode, SByte)

Vloží zadaný instrukční a znakový argument do Microsoft zprostředkujícího jazyka (MSIL) instrukce.

Emit(OpCode, SignatureHelper)

Vloží zadanou instrukci a token podpisu do datového proudu Microsoft zprostředkujícího jazyka (MSIL).

Emit(OpCode, Single)

Vloží zadaný instrukční a číselný argument do Microsoft zprostředkujícího jazyka (MSIL) instrukce.

Emit(OpCode, String)

Vloží zadanou instrukci do datového proudu Microsoft intermediate language (MSIL) následovaný tokenem metadat pro daný řetězec.

Emit(OpCode, Type)

Vloží zadanou instrukci do datového proudu Microsoft intermediate language (MSIL) následovaný tokenem metadat pro daný typ.

Emit(OpCode)

Umístí zadanou instrukci do datového proudu instrukcí.

EmitCall(OpCode, MethodInfo, Type[])

Umístí instrukce call nebo callvirt do datového proudu Microsoft intermediate language (MSIL), který volá metodu varargs.

EmitCalli(OpCode, CallingConvention, Type, Type[])

Umístí Calli instrukce do datového proudu Microsoft zprostředkujícího jazyka (MSIL), který určuje nespravovanou konvenci volání pro nepřímé volání.

EmitCalli(OpCode, CallingConventions, Type, Type[], Type[])

Umístí Calli instrukce do datového proudu Microsoft zprostředkujícího jazyka (MSIL), který určuje spravovanou konvenci volání pro nepřímé volání.

EmitCalli(Type)

Generuje Microsoft pokyny jazyka MSIL (Intermediate Language).

EmitWriteLine(FieldInfo)

Generuje Microsoft zprostředkující jazyk (MSIL) potřebný k volání WriteLine s daným polem.

EmitWriteLine(LocalBuilder)

Generuje Microsoft zprostředkující jazyk (MSIL) potřebný k volání WriteLine s danou místní proměnnou.

EmitWriteLine(String)

Generuje Microsoft zprostředkující jazyk (MSIL) pro volání WriteLine s řetězcem.

EndExceptionBlock()

Ukončí blok výjimky.

EndScope()

Končí lexikální obor.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MarkLabel(Label)

Označí aktuální pozici datového proudu Microsoft zprostředkujícího jazyka (MSIL) daným popiskem.

MarkSequencePoint(ISymbolDocumentWriter, Int32, Int32, Int32, Int32)

Označí bod sekvence ve streamu jazyka MSIL (Microsoft intermediate language).

MarkSequencePointCore(ISymbolDocumentWriter, Int32, Int32, Int32, Int32)

Při přepsání v odvozené třídě označí bod sekvence ve streamu Microsoft intermediate language (MSIL).

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ThrowException(Type)

Vygeneruje pokyn k vyvolání výjimky.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
UsingNamespace(String)

Určuje obor názvů, který se má použít při vyhodnocování místních hodnot a sleduje aktuální aktivní lexikální obor.

Explicitní implementace rozhraní

Name Description
_ILGenerator.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

_ILGenerator.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní.

_ILGenerator.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

_ILGenerator.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

Platí pro