Class Detour
A fully managed detour.
Multiple Detours for a method to detour from can exist at any given time. Detours can be layered.
If you're writing your own detour manager or need to detour native functions, it's better to create instances of NativeDetour instead.
Inheritance
System.Object
Detour
Implements
System.IDisposable
Assembly: MonoMod.RuntimeDetour.dll
Syntax
public class Detour : Object, ISortableDetour, IDetour, IDisposable
Constructors
Detour(Delegate, Delegate)
Declaration
public Detour(Delegate from, Delegate to)
Parameters
Type |
Name |
Description |
System.Delegate |
from |
|
System.Delegate |
to |
|
Detour(Delegate, Delegate, DetourConfig)
Declaration
public Detour(Delegate from, Delegate to, DetourConfig config)
Parameters
Type |
Name |
Description |
System.Delegate |
from |
|
System.Delegate |
to |
|
DetourConfig |
config |
|
Detour(Delegate, Delegate, ref DetourConfig)
Declaration
public Detour(Delegate from, Delegate to, ref DetourConfig config)
Parameters
Type |
Name |
Description |
System.Delegate |
from |
|
System.Delegate |
to |
|
DetourConfig |
config |
|
Detour(Delegate, IntPtr)
Declaration
public Detour(Delegate from, IntPtr to)
Parameters
Type |
Name |
Description |
System.Delegate |
from |
|
System.IntPtr |
to |
|
Detour(Delegate, IntPtr, DetourConfig)
Declaration
public Detour(Delegate from, IntPtr to, DetourConfig config)
Parameters
Type |
Name |
Description |
System.Delegate |
from |
|
System.IntPtr |
to |
|
DetourConfig |
config |
|
Detour(Delegate, IntPtr, ref DetourConfig)
Declaration
public Detour(Delegate from, IntPtr to, ref DetourConfig config)
Parameters
Type |
Name |
Description |
System.Delegate |
from |
|
System.IntPtr |
to |
|
DetourConfig |
config |
|
Detour(Expression, IntPtr)
Declaration
public Detour(Expression from, IntPtr to)
Parameters
Type |
Name |
Description |
System.Linq.Expressions.Expression |
from |
|
System.IntPtr |
to |
|
Detour(Expression, IntPtr, DetourConfig)
Declaration
public Detour(Expression from, IntPtr to, DetourConfig config)
Parameters
Type |
Name |
Description |
System.Linq.Expressions.Expression |
from |
|
System.IntPtr |
to |
|
DetourConfig |
config |
|
Detour(Expression, IntPtr, ref DetourConfig)
Declaration
public Detour(Expression from, IntPtr to, ref DetourConfig config)
Parameters
Type |
Name |
Description |
System.Linq.Expressions.Expression |
from |
|
System.IntPtr |
to |
|
DetourConfig |
config |
|
Detour(Expression, Expression)
Declaration
public Detour(Expression from, Expression to)
Parameters
Type |
Name |
Description |
System.Linq.Expressions.Expression |
from |
|
System.Linq.Expressions.Expression |
to |
|
Detour(Expression, Expression, DetourConfig)
Declaration
public Detour(Expression from, Expression to, DetourConfig config)
Parameters
Type |
Name |
Description |
System.Linq.Expressions.Expression |
from |
|
System.Linq.Expressions.Expression |
to |
|
DetourConfig |
config |
|
Detour(Expression, Expression, ref DetourConfig)
Declaration
public Detour(Expression from, Expression to, ref DetourConfig config)
Parameters
Type |
Name |
Description |
System.Linq.Expressions.Expression |
from |
|
System.Linq.Expressions.Expression |
to |
|
DetourConfig |
config |
|
Detour(Expression<Action>, IntPtr)
Declaration
public Detour(Expression<Action> from, IntPtr to)
Parameters
Type |
Name |
Description |
System.Linq.Expressions.Expression<System.Action> |
from |
|
System.IntPtr |
to |
|
Detour(Expression<Action>, IntPtr, DetourConfig)
Declaration
public Detour(Expression<Action> from, IntPtr to, DetourConfig config)
Parameters
Type |
Name |
Description |
System.Linq.Expressions.Expression<System.Action> |
from |
|
System.IntPtr |
to |
|
DetourConfig |
config |
|
Detour(Expression<Action>, IntPtr, ref DetourConfig)
Declaration
public Detour(Expression<Action> from, IntPtr to, ref DetourConfig config)
Parameters
Type |
Name |
Description |
System.Linq.Expressions.Expression<System.Action> |
from |
|
System.IntPtr |
to |
|
DetourConfig |
config |
|
Detour(Expression<Action>, Expression<Action>)
Declaration
public Detour(Expression<Action> from, Expression<Action> to)
Parameters
Type |
Name |
Description |
System.Linq.Expressions.Expression<System.Action> |
from |
|
System.Linq.Expressions.Expression<System.Action> |
to |
|
Detour(Expression<Action>, Expression<Action>, DetourConfig)
Declaration
public Detour(Expression<Action> from, Expression<Action> to, DetourConfig config)
Parameters
Type |
Name |
Description |
System.Linq.Expressions.Expression<System.Action> |
from |
|
System.Linq.Expressions.Expression<System.Action> |
to |
|
DetourConfig |
config |
|
Detour(Expression<Action>, Expression<Action>, ref DetourConfig)
Declaration
public Detour(Expression<Action> from, Expression<Action> to, ref DetourConfig config)
Parameters
Type |
Name |
Description |
System.Linq.Expressions.Expression<System.Action> |
from |
|
System.Linq.Expressions.Expression<System.Action> |
to |
|
DetourConfig |
config |
|
Detour(MethodBase, IntPtr)
Declaration
public Detour(MethodBase method, IntPtr to)
Parameters
Type |
Name |
Description |
System.Reflection.MethodBase |
method |
|
System.IntPtr |
to |
|
Detour(MethodBase, IntPtr, DetourConfig)
Declaration
public Detour(MethodBase method, IntPtr to, DetourConfig config)
Parameters
Type |
Name |
Description |
System.Reflection.MethodBase |
method |
|
System.IntPtr |
to |
|
DetourConfig |
config |
|
Detour(MethodBase, IntPtr, ref DetourConfig)
Declaration
public Detour(MethodBase method, IntPtr to, ref DetourConfig config)
Parameters
Type |
Name |
Description |
System.Reflection.MethodBase |
method |
|
System.IntPtr |
to |
|
DetourConfig |
config |
|
Detour(MethodBase, MethodBase)
Declaration
public Detour(MethodBase from, MethodBase to)
Parameters
Type |
Name |
Description |
System.Reflection.MethodBase |
from |
|
System.Reflection.MethodBase |
to |
|
Detour(MethodBase, MethodBase, DetourConfig)
Declaration
public Detour(MethodBase from, MethodBase to, DetourConfig config)
Parameters
Type |
Name |
Description |
System.Reflection.MethodBase |
from |
|
System.Reflection.MethodBase |
to |
|
DetourConfig |
config |
|
Detour(MethodBase, MethodBase, ref DetourConfig)
Declaration
public Detour(MethodBase from, MethodBase to, ref DetourConfig config)
Parameters
Type |
Name |
Description |
System.Reflection.MethodBase |
from |
|
System.Reflection.MethodBase |
to |
|
DetourConfig |
config |
|
Fields
Method
Declaration
public readonly MethodBase Method
Field Value
Type |
Description |
System.Reflection.MethodBase |
|
OnDetour
Declaration
public static Func<Detour, MethodBase, MethodBase, bool> OnDetour
Field Value
Type |
Description |
System.Func<Detour, System.Reflection.MethodBase, System.Reflection.MethodBase, System.Boolean> |
|
OnGenerateTrampoline
Declaration
public static Func<Detour, MethodBase, MethodBase> OnGenerateTrampoline
Field Value
Type |
Description |
System.Func<Detour, System.Reflection.MethodBase, System.Reflection.MethodBase> |
|
OnUndo
Declaration
public static Func<Detour, bool> OnUndo
Field Value
Type |
Description |
System.Func<Detour, System.Boolean> |
|
Target
Declaration
public readonly MethodBase Target
Field Value
Type |
Description |
System.Reflection.MethodBase |
|
TargetReal
Declaration
public readonly MethodBase TargetReal
Field Value
Type |
Description |
System.Reflection.MethodBase |
|
Properties
After
Declaration
public IEnumerable<string> After { get; set; }
Property Value
Type |
Description |
System.Collections.Generic.IEnumerable<System.String> |
|
Before
Declaration
public IEnumerable<string> Before { get; set; }
Property Value
Type |
Description |
System.Collections.Generic.IEnumerable<System.String> |
|
GlobalIndex
Declaration
public uint GlobalIndex { get; }
Property Value
Type |
Description |
System.UInt32 |
|
ID
Declaration
public string ID { get; set; }
Property Value
Type |
Description |
System.String |
|
Index
Declaration
public int Index { get; }
Property Value
Type |
Description |
System.Int32 |
|
IsApplied
Declaration
public bool IsApplied { get; }
Property Value
Type |
Description |
System.Boolean |
|
IsValid
Declaration
public bool IsValid { get; }
Property Value
Type |
Description |
System.Boolean |
|
MaxIndex
Declaration
public int MaxIndex { get; }
Property Value
Type |
Description |
System.Int32 |
|
Priority
Declaration
public int Priority { get; set; }
Property Value
Type |
Description |
System.Int32 |
|
Methods
Apply()
Mark the detour as applied in the detour chain. This can be done automatically when creating an instance.
Declaration
Dispose()
Undo and free this temporary detour.
Declaration
Free()
Free the detour, while also permanently undoing it. This makes any further operations on this detour invalid.
Declaration
GenerateTrampoline(MethodBase)
Generate a new DynamicMethod with which you can invoke the previous state.
Declaration
public MethodBase GenerateTrampoline(MethodBase signature = null)
Parameters
Type |
Name |
Description |
System.Reflection.MethodBase |
signature |
|
Returns
Type |
Description |
System.Reflection.MethodBase |
|
GenerateTrampoline<T>()
Generate a new DynamicMethod with which you can invoke the previous state.
Declaration
public T GenerateTrampoline<T>()
where T : Delegate
Returns
Type Parameters
Undo()
Undo the detour without freeing it, allowing you to reapply it later.
Declaration
Implements
System.IDisposable