Class ILContext
An IL manipulation "context" with various helpers and direct access to the MethodBody.
Inheritance
Implements
Namespace: MonoMod.Cil
Assembly: MonoMod.Utils.dll
Syntax
public class ILContext : Object, IDisposable
Constructors
ILContext(MethodDefinition)
Declaration
public ILContext(MethodDefinition method)
Parameters
| Type | Name | Description |
|---|---|---|
| Mono.Cecil.MethodDefinition | method |
Fields
ReferenceBag
The current reference bag. Used for methods such as EmitReference and EmitDelegate.
Declaration
public IILReferenceBag ReferenceBag
Field Value
| Type | Description |
|---|---|
| IILReferenceBag |
Properties
Body
The manipulated method body.
Declaration
public MethodBody Body { get; }
Property Value
| Type | Description |
|---|---|
| Mono.Cecil.Cil.MethodBody |
IL
The manipulated method's IL processor.
Declaration
public ILProcessor IL { get; }
Property Value
| Type | Description |
|---|---|
| Mono.Cecil.Cil.ILProcessor |
Instrs
The manipulated method instructions.
Declaration
public Collection<Instruction> Instrs { get; }
Property Value
| Type | Description |
|---|---|
| Mono.Collections.Generic.Collection<Mono.Cecil.Cil.Instruction> |
IsReadOnly
Has the context been made read-only? No further method access is possible, but the context has not yet been disposed.
Declaration
public bool IsReadOnly { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
Labels
A readonly list of all defined labels.
Declaration
public ReadOnlyCollection<ILLabel> Labels { get; }
Property Value
| Type | Description |
|---|---|
| System.Collections.ObjectModel.ReadOnlyCollection<ILLabel> |
Method
The manipulated method.
Declaration
public MethodDefinition Method { get; }
Property Value
| Type | Description |
|---|---|
| Mono.Cecil.MethodDefinition |
Module
The manipulated method's module.
Declaration
public ModuleDefinition Module { get; }
Property Value
| Type | Description |
|---|---|
| Mono.Cecil.ModuleDefinition |
Methods
AddReference<T>(T)
Bind an arbitary object to an ILContext for static retrieval.
Declaration
public int AddReference<T>(T t)
Parameters
| Type | Name | Description |
|---|---|---|
| T | t | The object to store. |
Returns
| Type | Description |
|---|---|
| System.Int32 | The id to use in combination with the typeparam for object retrieval. |
Type Parameters
| Name | Description |
|---|---|
| T | The type of the object. The combination of typeparam and id provides the unique static reference. |
At(Instruction)
Declaration
public ILCursor At(Instruction instr)
Parameters
| Type | Name | Description |
|---|---|---|
| Mono.Cecil.Cil.Instruction | instr |
Returns
| Type | Description |
|---|---|
| ILCursor |
At(ILLabel)
Declaration
public ILCursor At(ILLabel label)
Parameters
| Type | Name | Description |
|---|---|---|
| ILLabel | label |
Returns
| Type | Description |
|---|---|
| ILCursor |
At(Int32)
Declaration
public ILCursor At(int index)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | index |
Returns
| Type | Description |
|---|---|
| ILCursor |
DefineLabel()
Define a new label to be marked with a cursor.
Declaration
public ILLabel DefineLabel()
Returns
| Type | Description |
|---|---|
| ILLabel | A label without a target instruction. |
DefineLabel(Instruction)
Define a new label pointing at a given instruction.
Declaration
public ILLabel DefineLabel(Instruction target)
Parameters
| Type | Name | Description |
|---|---|---|
| Mono.Cecil.Cil.Instruction | target | The instruction the label will point at. |
Returns
| Type | Description |
|---|---|
| ILLabel | A label pointing at the given instruction. |
Dispose()
Dispose this context, making it read-only and invoking all OnDispose event listeners.
Declaration
public void Dispose()
GetIncomingLabels(Instruction)
Obtain all labels pointing at the given instruction.
Declaration
public IEnumerable<ILLabel> GetIncomingLabels(Instruction instr)
Parameters
| Type | Name | Description |
|---|---|---|
| Mono.Cecil.Cil.Instruction | instr | The instruction to get all labels for. |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<ILLabel> | All labels targeting the given instruction. |
Import(FieldInfo)
See Mono.Cecil.ModuleDefinition.ImportReference(System.Reflection.FieldInfo)
Declaration
public FieldReference Import(FieldInfo field)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.FieldInfo | field |
Returns
| Type | Description |
|---|---|
| Mono.Cecil.FieldReference |
Import(MethodBase)
See Mono.Cecil.ModuleDefinition.ImportReference(System.Reflection.MethodBase)
Declaration
public MethodReference Import(MethodBase method)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.MethodBase | method |
Returns
| Type | Description |
|---|---|
| Mono.Cecil.MethodReference |
Import(Type)
See Mono.Cecil.ModuleDefinition.ImportReference(System.Type)
Declaration
public TypeReference Import(Type type)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Type | type |
Returns
| Type | Description |
|---|---|
| Mono.Cecil.TypeReference |
IndexOf(Instruction)
Determine the index of a given instruction.
Declaration
public int IndexOf(Instruction instr)
Parameters
| Type | Name | Description |
|---|---|---|
| Mono.Cecil.Cil.Instruction | instr | The instruction to get the index of. |
Returns
| Type | Description |
|---|---|
| System.Int32 | The instruction index, or the end of the method body if it hasn't been found. |
Invoke(ILContext.Manipulator)
Invoke a given manipulator callback.
Declaration
public void Invoke(ILContext.Manipulator manip)
Parameters
| Type | Name | Description |
|---|---|---|
| ILContext.Manipulator | manip | The manipulator to run in this context. |
MakeReadOnly()
Mark this ILContext as read-only and prevent this context from further accessing the originally passed method.
Declaration
public void MakeReadOnly()
Remarks
If the method is altered prior to calling MakeReadOnly or afterwards by accessing the method directly, the results are undefined.
ToString()
Obtain a string representation of this context (method ID and body).
Declaration
public override string ToString()
Returns
| Type | Description |
|---|---|
| System.String | A string representation of this context. |
Events
OnDispose
Events which run when the context will be disposed.
Declaration
public event Action OnDispose
Event Type
| Type | Description |
|---|---|
| System.Action |