Class CilExtensions
A collection of extension methods that provide an alternative syntax for some static methods of this library
Inheritance
Inherited Members
Namespace: CilTools.BytecodeAnalysis.Extensions
Assembly: CilTools.BytecodeAnalysis.dll
Syntax
public static class CilExtensions
Methods
EmitCilGraph(ILGenerator, CilGraph, Func<CilInstruction, Boolean>)
Emits the entire content of CIL graph into the specified IL generator, optionally calling user callback for each processed instruction.
Declaration
public static void EmitCilGraph(this ILGenerator ilg, CilGraph graph, Func<CilInstruction, bool> callback = null)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.Emit.ILGenerator | ilg | Target IL generator. |
| CilGraph | graph | The CIL graph which content should be emitted. |
| System.Func<CilInstruction, System.Boolean> | callback | User callback to be called for each processed instruction. |
Remarks
Passing user callback into this method enables you to filter instructions that you want to be emitted into target IL generator. Return true to skip emitting instruction, or false to emit instruction.
EmitInstruction(ILGenerator, CilInstruction)
Emits CIL code for the specified instruction into the specified IL generator.
Declaration
public static void EmitInstruction(this ILGenerator ilg, CilInstruction instr)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.Emit.ILGenerator | ilg | Target IL generator. |
| CilInstruction | instr | IL instruction to be emitted. |
GetCilGraph(MethodBase)
Returns CilGraph that represents this method
Declaration
public static CilGraph GetCilGraph(this MethodBase m)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.MethodBase | m | Method for which to build CIL graph |
Returns
| Type | Description |
|---|---|
| CilGraph | CIL graph object |
GetCilText(MethodBase)
Returns this method's CIL code as string
Declaration
public static string GetCilText(this MethodBase m)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.MethodBase | m | Method for which to retrieve CIL |
Returns
| Type | Description |
|---|---|
| System.String | CIL code string |
Remarks
Alias for MethodToText(MethodBase) method.
GetExecutingInstruction(StackFrame)
Gets an currently executing instruction corresponding to this stack frame
Declaration
public static CilInstruction GetExecutingInstruction(this StackFrame sf)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Diagnostics.StackFrame | sf | A stack frame object |
Returns
| Type | Description |
|---|---|
| CilInstruction | CIL instruction |
GetInstructions(StackTrace)
Gets a repesentation of this stack trace as CIL instructions
Declaration
public static IEnumerable<CilInstruction> GetInstructions(this StackTrace trace)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Diagnostics.StackTrace | trace | Stack trace object |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<CilInstruction> | A collection of CIL instructions |
GetInstructions(MethodBase)
Retrieves all instructions from the method's body
Declaration
public static IEnumerable<CilInstruction> GetInstructions(this MethodBase m)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.MethodBase | m | Source method |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<CilInstruction> | A collection of CIL instructions that form the body of this method |
Exceptions
| Type | Condition |
|---|---|
| System.NotSupportedException | CilReader encountered unknown opcode |
| CilParserException | Failed to retrieve method body for the method |
GetLastExecutedInstruction(StackFrame)
Gets a last executed instruction corresponding to this stack frame
Declaration
public static CilInstruction GetLastExecutedInstruction(this StackFrame sf)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Diagnostics.StackFrame | sf | A stack frame object |
Returns
| Type | Description |
|---|---|
| CilInstruction | CIL instruction |
GetReferencedMembers(Assembly)
Gets all members referenced by the code of specified assembly
Declaration
public static IEnumerable<MemberInfo> GetReferencedMembers(this Assembly ass)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.Assembly | ass | Assembly for which to retrieve referenced members |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo> | A collection of MemberInfo objects |
Remarks
Referenced member is a member that appears as an operand of instruction in any of the assembly's methods.
GetReferencedMembers(Assembly, MemberCriteria)
Gets members referenced by the code of specified assembly that match specified criteria
Declaration
public static IEnumerable<MemberInfo> GetReferencedMembers(this Assembly ass, MemberCriteria flags)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.Assembly | ass | Assembly for which to retrieve referenced members |
| MemberCriteria | flags | A combination of bitwise flags that control what kind of members are retrieved |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo> | A collection of MemberInfo objects |
Remarks
Referenced member is a member that appears as an operand of instruction in any of the assembly's methods.
GetReferencedMembers(MethodBase)
Gets all members (fields or methods) referenced by specified method
Declaration
public static IEnumerable<MemberInfo> GetReferencedMembers(this MethodBase mb)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.MethodBase | mb | Method for which to retrieve referenced members |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo> | A collection of MemberInfo objects |
Remarks
Referenced member is a member that appears as an operand of instruction in source method's body. For example, if the source method calls Foo method or creates delegate pointing to Foo, Foo is referenced by the source method.
Exceptions
| Type | Condition |
|---|---|
| System.NotSupportedException | CilReader encountered unknown opcode |
| CilParserException | Failed to retrieve method body for the method |
GetReferencedMembers(MethodBase, MemberCriteria)
Gets members (fields or methods) referenced by specified method that match specified criteria
Declaration
public static IEnumerable<MemberInfo> GetReferencedMembers(this MethodBase mb, MemberCriteria flags)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.MethodBase | mb | Method for which to retrieve referenced members |
| MemberCriteria | flags | A combination of bitwise flags that control what kind of members are retrieved |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo> | A collection of MemberInfo objects |
Remarks
Referenced member is a member that appears as an operand of instruction in source method's body. For example, if the source method calls Foo method or creates delegate pointing to Foo, Foo is referenced by the source method.
Exceptions
| Type | Condition |
|---|---|
| System.NotSupportedException | CilReader encountered unknown opcode |
| CilParserException | Failed to retrieve method body for the method |
GetReferencedMembers(Type)
Gets all members referenced by the code of specified type
Declaration
public static IEnumerable<MemberInfo> GetReferencedMembers(this Type t)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Type | t | Type for which to retrieve referenced memmbers |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo> | A collection of MemberInfo objects |
Remarks
Referenced member is a member that appears as an operand of instruction in any of the type's methods.
GetReferencedMembers(Type, MemberCriteria)
Gets members referenced by the code of specified type that match specified criteria
Declaration
public static IEnumerable<MemberInfo> GetReferencedMembers(this Type t, MemberCriteria flags)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Type | t | Type for which to retrieve referenced memmbers |
| MemberCriteria | flags | A combination of bitwise flags that control what kind of members are retrieved |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo> | A collection of MemberInfo objects |
Remarks
Referenced member is a member that appears as an operand of instruction in any of the type's methods.
GetReferencedMethods(Assembly)
Get all methods that are referenced by the code in the specified assembly
Declaration
public static IEnumerable<MethodBase> GetReferencedMethods(this Assembly ass)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.Assembly | ass | Assembly for which to retrieve referenced methods |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<System.Reflection.MethodBase> | A collection of referenced methods |
Remarks
Referenced member is a member that appears as an operand of instruction in any of the assembly's methods.
GetReferencedMethods(MethodBase)
Gets all methods that are referenced by this method
Declaration
public static IEnumerable<MethodBase> GetReferencedMethods(this MethodBase mb)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Reflection.MethodBase | mb | Method for which to retrieve referenced methods |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<System.Reflection.MethodBase> | A collection of referenced methods |
Remarks
Referenced member is a member that appears as an operand of instruction in source method's body. For example, if the source method calls Foo method or creates delegate pointing to Foo, Foo is referenced by the source method.
Exceptions
| Type | Condition |
|---|---|
| System.NotSupportedException | CilReader encountered unknown opcode |
| CilParserException | Failed to retrieve method body for the method |
GetReferencedMethods(Type)
Get all methods that are referenced by the code of this type
Declaration
public static IEnumerable<MethodBase> GetReferencedMethods(this Type t)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Type | t | Type for which to retrieve referenced methods |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<System.Reflection.MethodBase> | A collection of referenced methods |
Remarks
Referenced member is a member that appears as an operand of instruction in any of the type's methods.
PrintInstructions(StackTrace, TextWriter)
Prints this stack trace, represented as a CIL code, into the specified TextWriter
Declaration
public static void PrintInstructions(this StackTrace trace, TextWriter target = null)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Diagnostics.StackTrace | trace | Source stack trace object |
| System.IO.TextWriter | target | Target TextWriter object. If null or omitted, standard output will be used. |