Show / Hide Table of Contents

    Class MonoModder

    Inheritance
    System.Object
    MonoModder
    Implements
    System.IDisposable
    Namespace: MonoMod
    Assembly: MonoMod.dll
    Syntax
    public class MonoModder : Object, IDisposable

    Constructors

    MonoModder()

    Declaration
    public MonoModder()

    Fields

    _assemblyResolver

    Declaration
    protected IAssemblyResolver _assemblyResolver
    Field Value
    Type Description
    Mono.Cecil.IAssemblyResolver

    _GACPaths

    Declaration
    protected string[] _GACPaths
    Field Value
    Type Description
    System.String[]

    _mmAddedCtor

    Declaration
    protected MethodDefinition _mmAddedCtor
    Field Value
    Type Description
    Mono.Cecil.MethodDefinition

    _mmOriginalCtor

    Declaration
    protected MethodDefinition _mmOriginalCtor
    Field Value
    Type Description
    Mono.Cecil.MethodDefinition

    _mmOriginalNameCtor

    Declaration
    protected MethodDefinition _mmOriginalNameCtor
    Field Value
    Type Description
    Mono.Cecil.MethodDefinition

    _mmPatchCtor

    Declaration
    protected MethodDefinition _mmPatchCtor
    Field Value
    Type Description
    Mono.Cecil.MethodDefinition

    _readerParameters

    Declaration
    protected ReaderParameters _readerParameters
    Field Value
    Type Description
    Mono.Cecil.ReaderParameters

    _writerParameters

    Declaration
    protected WriterParameters _writerParameters
    Field Value
    Type Description
    Mono.Cecil.WriterParameters

    CleanupEnabled

    Declaration
    public bool CleanupEnabled
    Field Value
    Type Description
    System.Boolean

    CurrentRID

    Declaration
    public int CurrentRID
    Field Value
    Type Description
    System.Int32

    CustomAttributeHandlers

    Declaration
    public Dictionary<string, Action<object, object[]>> CustomAttributeHandlers
    Field Value
    Type Description
    System.Collections.Generic.Dictionary<System.String, System.Action<System.Object, System.Object[]>>

    CustomMethodAttributeHandlers

    Declaration
    public Dictionary<string, Action<object, object[]>> CustomMethodAttributeHandlers
    Field Value
    Type Description
    System.Collections.Generic.Dictionary<System.String, System.Action<System.Object, System.Object[]>>

    DebugSymbolOutputFormat

    Declaration
    public DebugSymbolFormat DebugSymbolOutputFormat
    Field Value
    Type Description
    DebugSymbolFormat

    DependencyCache

    Declaration
    public Dictionary<string, ModuleDefinition> DependencyCache
    Field Value
    Type Description
    System.Collections.Generic.Dictionary<System.String, Mono.Cecil.ModuleDefinition>

    DependencyDirs

    Declaration
    public List<string> DependencyDirs
    Field Value
    Type Description
    System.Collections.Generic.List<System.String>

    DependencyMap

    Declaration
    public Dictionary<ModuleDefinition, List<ModuleDefinition>> DependencyMap
    Field Value
    Type Description
    System.Collections.Generic.Dictionary<Mono.Cecil.ModuleDefinition, System.Collections.Generic.List<Mono.Cecil.ModuleDefinition>>

    ForceCallMap

    Declaration
    public Dictionary<string, OpCode> ForceCallMap
    Field Value
    Type Description
    System.Collections.Generic.Dictionary<System.String, Mono.Cecil.Cil.OpCode>

    Input

    Declaration
    public Stream Input
    Field Value
    Type Description
    System.IO.Stream

    InputPath

    Declaration
    public string InputPath
    Field Value
    Type Description
    System.String

    IsMono

    Declaration
    public static readonly bool IsMono
    Field Value
    Type Description
    System.Boolean

    LogVerboseEnabled

    Declaration
    public bool LogVerboseEnabled
    Field Value
    Type Description
    System.Boolean

    MethodBodyRewriter

    Declaration
    public MethodBodyRewriter MethodBodyRewriter
    Field Value
    Type Description
    MethodBodyRewriter

    MethodParser

    Declaration
    public MethodParser MethodParser
    Field Value
    Type Description
    MethodParser

    MethodRewriter

    Declaration
    public MethodRewriter MethodRewriter
    Field Value
    Type Description
    MethodRewriter

    MissingDependencyResolver

    Declaration
    public MissingDependencyResolver MissingDependencyResolver
    Field Value
    Type Description
    MissingDependencyResolver

    MissingDependencyThrow

    Declaration
    public bool MissingDependencyThrow
    Field Value
    Type Description
    System.Boolean

    Mods

    Declaration
    public List<ModuleReference> Mods
    Field Value
    Type Description
    System.Collections.Generic.List<Mono.Cecil.ModuleReference>

    Module

    Declaration
    public ModuleDefinition Module
    Field Value
    Type Description
    Mono.Cecil.ModuleDefinition

    OnReadMod

    Declaration
    public ModReadEventHandler OnReadMod
    Field Value
    Type Description
    ModReadEventHandler

    Output

    Declaration
    public Stream Output
    Field Value
    Type Description
    System.IO.Stream

    OutputPath

    Declaration
    public string OutputPath
    Field Value
    Type Description
    System.String

    PostProcessors

    Declaration
    public PostProcessor PostProcessors
    Field Value
    Type Description
    PostProcessor

    PreventInline

    Declaration
    public bool PreventInline
    Field Value
    Type Description
    System.Boolean

    PublicEverything

    Declaration
    public bool PublicEverything
    Field Value
    Type Description
    System.Boolean

    ReadingMode

    Declaration
    public ReadingMode ReadingMode
    Field Value
    Type Description
    Mono.Cecil.ReadingMode

    RelinkerCacheEnabled

    Declaration
    public bool RelinkerCacheEnabled
    Field Value
    Type Description
    System.Boolean

    RelinkMap

    Declaration
    public Dictionary<string, object> RelinkMap
    Field Value
    Type Description
    System.Collections.Generic.Dictionary<System.String, System.Object>

    RelinkMapCache

    Declaration
    public Dictionary<string, IMetadataTokenProvider> RelinkMapCache
    Field Value
    Type Description
    System.Collections.Generic.Dictionary<System.String, Mono.Cecil.IMetadataTokenProvider>

    RelinkModuleMap

    Declaration
    public Dictionary<string, ModuleDefinition> RelinkModuleMap
    Field Value
    Type Description
    System.Collections.Generic.Dictionary<System.String, Mono.Cecil.ModuleDefinition>

    RelinkModuleMapCache

    Declaration
    public Dictionary<string, TypeReference> RelinkModuleMapCache
    Field Value
    Type Description
    System.Collections.Generic.Dictionary<System.String, Mono.Cecil.TypeReference>

    RemovePatchReferences

    Declaration
    public bool RemovePatchReferences
    Field Value
    Type Description
    System.Boolean

    SharedData

    Declaration
    public Dictionary<string, object> SharedData
    Field Value
    Type Description
    System.Collections.Generic.Dictionary<System.String, System.Object>

    ShouldCleanupAttrib

    Declaration
    public Func<ICustomAttributeProvider, TypeReference, bool> ShouldCleanupAttrib
    Field Value
    Type Description
    System.Func<Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.TypeReference, System.Boolean>

    SkipList

    Declaration
    public HashSet<string> SkipList
    Field Value
    Type Description
    System.Collections.Generic.HashSet<System.String>

    Strict

    Declaration
    public bool Strict
    Field Value
    Type Description
    System.Boolean

    UpgradeMSCORLIB

    Declaration
    public Nullable<bool> UpgradeMSCORLIB
    Field Value
    Type Description
    System.Nullable<System.Boolean>

    Version

    Declaration
    public static readonly Version Version
    Field Value
    Type Description
    System.Version

    Properties

    AssemblyResolver

    Declaration
    public virtual IAssemblyResolver AssemblyResolver { get; set; }
    Property Value
    Type Description
    Mono.Cecil.IAssemblyResolver

    GACPaths

    Declaration
    public string[] GACPaths { get; set; }
    Property Value
    Type Description
    System.String[]

    ReaderParameters

    Declaration
    public virtual ReaderParameters ReaderParameters { get; set; }
    Property Value
    Type Description
    Mono.Cecil.ReaderParameters

    WriterParameters

    Declaration
    public virtual WriterParameters WriterParameters { get; set; }
    Property Value
    Type Description
    Mono.Cecil.WriterParameters

    Methods

    AllowedSpecialName(MethodDefinition, TypeDefinition)

    Checks if the method has a special name that is "allowed" to be patched.

    Declaration
    public virtual bool AllowedSpecialName(MethodDefinition method, TypeDefinition targetType = null)
    Parameters
    Type Name Description
    Mono.Cecil.MethodDefinition method

    Method to check.

    Mono.Cecil.TypeDefinition targetType

    Type to which the method will be added.

    Returns
    Type Description
    System.Boolean

    true if the special name used in the method is allowed, false otherwise.

    AutoPatch()

    Automatically mods the module, loading Input, writing the modded module to Output.

    Declaration
    public virtual void AutoPatch()

    Cleanup(ICustomAttributeProvider, Boolean)

    Declaration
    public virtual void Cleanup(ICustomAttributeProvider cap, bool all = false)
    Parameters
    Type Name Description
    Mono.Cecil.ICustomAttributeProvider cap
    System.Boolean all

    Cleanup(Boolean)

    Declaration
    public virtual void Cleanup(bool all = false)
    Parameters
    Type Name Description
    System.Boolean all

    CleanupType(TypeDefinition, Boolean)

    Declaration
    public virtual void CleanupType(TypeDefinition type, bool all = false)
    Parameters
    Type Name Description
    Mono.Cecil.TypeDefinition type
    System.Boolean all

    ClearCaches(Boolean, Boolean, Boolean)

    Declaration
    public virtual void ClearCaches(bool all = false, bool shareable = false, bool moduleSpecific = false)
    Parameters
    Type Name Description
    System.Boolean all
    System.Boolean shareable
    System.Boolean moduleSpecific

    DefaultMissingDependencyResolver(MonoModder, ModuleDefinition, String, String)

    Declaration
    public virtual ModuleDefinition DefaultMissingDependencyResolver(MonoModder mod, ModuleDefinition main, string name, string fullName)
    Parameters
    Type Name Description
    MonoModder mod
    Mono.Cecil.ModuleDefinition main
    System.String name
    System.String fullName
    Returns
    Type Description
    Mono.Cecil.ModuleDefinition

    DefaultParser(MonoModder, MethodBody, Instruction, ref Int32)

    Declaration
    public virtual bool DefaultParser(MonoModder mod, MethodBody body, Instruction instr, ref int instri)
    Parameters
    Type Name Description
    MonoModder mod
    Mono.Cecil.Cil.MethodBody body
    Mono.Cecil.Cil.Instruction instr
    System.Int32 instri
    Returns
    Type Description
    System.Boolean

    DefaultPostProcessor(MonoModder)

    Declaration
    public virtual void DefaultPostProcessor(MonoModder modder)
    Parameters
    Type Name Description
    MonoModder modder

    DefaultPostProcessType(TypeDefinition)

    Declaration
    public virtual void DefaultPostProcessType(TypeDefinition type)
    Parameters
    Type Name Description
    Mono.Cecil.TypeDefinition type

    Dispose()

    Declaration
    public virtual void Dispose()

    FindType(ModuleDefinition, String, Stack<ModuleDefinition>)

    Declaration
    protected virtual TypeReference FindType(ModuleDefinition main, string fullName, Stack<ModuleDefinition> crawled)
    Parameters
    Type Name Description
    Mono.Cecil.ModuleDefinition main
    System.String fullName
    System.Collections.Generic.Stack<Mono.Cecil.ModuleDefinition> crawled
    Returns
    Type Description
    Mono.Cecil.TypeReference

    FindType(String)

    Declaration
    public virtual TypeReference FindType(string name)
    Parameters
    Type Name Description
    System.String name
    Returns
    Type Description
    Mono.Cecil.TypeReference

    FindType(String, Boolean)

    Declaration
    public virtual TypeReference FindType(string name, bool runtimeName)
    Parameters
    Type Name Description
    System.String name
    System.Boolean runtimeName
    Returns
    Type Description
    Mono.Cecil.TypeReference

    FindTypeDeep(String)

    Declaration
    public virtual TypeReference FindTypeDeep(string name)
    Parameters
    Type Name Description
    System.String name
    Returns
    Type Description
    Mono.Cecil.TypeReference

    GenReaderParameters(Boolean, String)

    Declaration
    public virtual ReaderParameters GenReaderParameters(bool mainModule, string path = null)
    Parameters
    Type Name Description
    System.Boolean mainModule
    System.String path
    Returns
    Type Description
    Mono.Cecil.ReaderParameters

    GetMetadataToken(TokenType)

    Creates a new non-conflicting MetadataToken.

    Declaration
    public virtual MetadataToken GetMetadataToken(TokenType type)
    Parameters
    Type Name Description
    Mono.Cecil.TokenType type

    The type of the new token.

    Returns
    Type Description
    Mono.Cecil.MetadataToken

    A MetadataToken with an unique RID for the target module.

    GetMonoModAddedCtor()

    Declaration
    public virtual MethodReference GetMonoModAddedCtor()
    Returns
    Type Description
    Mono.Cecil.MethodReference

    GetMonoModOriginalCtor()

    Declaration
    public virtual MethodReference GetMonoModOriginalCtor()
    Returns
    Type Description
    Mono.Cecil.MethodReference

    GetMonoModOriginalNameCtor()

    Declaration
    public virtual MethodReference GetMonoModOriginalNameCtor()
    Returns
    Type Description
    Mono.Cecil.MethodReference

    GetMonoModPatchCtor()

    Declaration
    public virtual MethodReference GetMonoModPatchCtor()
    Returns
    Type Description
    Mono.Cecil.MethodReference

    Log(Object)

    Declaration
    public virtual void Log(object value)
    Parameters
    Type Name Description
    System.Object value

    Log(String)

    Declaration
    public virtual void Log(string text)
    Parameters
    Type Name Description
    System.String text

    LogVerbose(Object)

    Declaration
    public virtual void LogVerbose(object value)
    Parameters
    Type Name Description
    System.Object value

    LogVerbose(String)

    Declaration
    public virtual void LogVerbose(string text)
    Parameters
    Type Name Description
    System.String text

    MainRelinker(IMetadataTokenProvider, IGenericParameterProvider)

    Declaration
    public virtual IMetadataTokenProvider MainRelinker(IMetadataTokenProvider mtp, IGenericParameterProvider context)
    Parameters
    Type Name Description
    Mono.Cecil.IMetadataTokenProvider mtp
    Mono.Cecil.IGenericParameterProvider context
    Returns
    Type Description
    Mono.Cecil.IMetadataTokenProvider

    MapDependencies()

    Declaration
    public virtual void MapDependencies()

    MapDependencies(ModuleDefinition)

    Declaration
    public virtual void MapDependencies(ModuleDefinition main)
    Parameters
    Type Name Description
    Mono.Cecil.ModuleDefinition main

    MapDependency(ModuleDefinition, AssemblyNameReference)

    Declaration
    public virtual void MapDependency(ModuleDefinition main, AssemblyNameReference depRef)
    Parameters
    Type Name Description
    Mono.Cecil.ModuleDefinition main
    Mono.Cecil.AssemblyNameReference depRef

    MapDependency(ModuleDefinition, String, String, AssemblyNameReference)

    Declaration
    public virtual void MapDependency(ModuleDefinition main, string name, string fullName = null, AssemblyNameReference depRef = null)
    Parameters
    Type Name Description
    Mono.Cecil.ModuleDefinition main
    System.String name
    System.String fullName
    Mono.Cecil.AssemblyNameReference depRef

    MatchingConditionals(ICustomAttributeProvider, AssemblyNameReference)

    Declaration
    public virtual bool MatchingConditionals(ICustomAttributeProvider cap, AssemblyNameReference asmName = null)
    Parameters
    Type Name Description
    Mono.Cecil.ICustomAttributeProvider cap
    Mono.Cecil.AssemblyNameReference asmName
    Returns
    Type Description
    System.Boolean

    MatchingConditionals(ICustomAttributeProvider, ModuleDefinition)

    Declaration
    public virtual bool MatchingConditionals(ICustomAttributeProvider cap, ModuleDefinition module)
    Parameters
    Type Name Description
    Mono.Cecil.ICustomAttributeProvider cap
    Mono.Cecil.ModuleDefinition module
    Returns
    Type Description
    System.Boolean

    ParseLinkFrom(MemberReference, CustomAttribute)

    Declaration
    public virtual void ParseLinkFrom(MemberReference target, CustomAttribute hook)
    Parameters
    Type Name Description
    Mono.Cecil.MemberReference target
    Mono.Cecil.CustomAttribute hook

    ParseLinkTo(MemberReference, CustomAttribute)

    Declaration
    public virtual void ParseLinkTo(MemberReference from, CustomAttribute hook)
    Parameters
    Type Name Description
    Mono.Cecil.MemberReference from
    Mono.Cecil.CustomAttribute hook

    ParseRules(ModuleDefinition)

    Declaration
    public virtual void ParseRules(ModuleDefinition mod)
    Parameters
    Type Name Description
    Mono.Cecil.ModuleDefinition mod

    ParseRulesInType(TypeDefinition, Type)

    Declaration
    public virtual void ParseRulesInType(TypeDefinition type, Type rulesTypeMMILRT = null)
    Parameters
    Type Name Description
    Mono.Cecil.TypeDefinition type
    System.Type rulesTypeMMILRT

    PatchEvent(TypeDefinition, EventDefinition, HashSet<MethodDefinition>)

    Declaration
    public virtual void PatchEvent(TypeDefinition targetType, EventDefinition srcEvent, HashSet<MethodDefinition> propMethods = null)
    Parameters
    Type Name Description
    Mono.Cecil.TypeDefinition targetType
    Mono.Cecil.EventDefinition srcEvent
    System.Collections.Generic.HashSet<Mono.Cecil.MethodDefinition> propMethods

    PatchField(TypeDefinition, FieldDefinition)

    Declaration
    public virtual void PatchField(TypeDefinition targetType, FieldDefinition field)
    Parameters
    Type Name Description
    Mono.Cecil.TypeDefinition targetType
    Mono.Cecil.FieldDefinition field

    PatchMethod(TypeDefinition, MethodDefinition)

    Declaration
    public virtual MethodDefinition PatchMethod(TypeDefinition targetType, MethodDefinition method)
    Parameters
    Type Name Description
    Mono.Cecil.TypeDefinition targetType
    Mono.Cecil.MethodDefinition method
    Returns
    Type Description
    Mono.Cecil.MethodDefinition

    PatchModule(ModuleDefinition)

    Patches the module (adds new type members).

    Declaration
    public virtual void PatchModule(ModuleDefinition mod)
    Parameters
    Type Name Description
    Mono.Cecil.ModuleDefinition mod

    Mod to patch into the input module.

    PatchNested(TypeDefinition)

    Declaration
    protected virtual void PatchNested(TypeDefinition type)
    Parameters
    Type Name Description
    Mono.Cecil.TypeDefinition type

    PatchProperty(TypeDefinition, PropertyDefinition, HashSet<MethodDefinition>)

    Declaration
    public virtual void PatchProperty(TypeDefinition targetType, PropertyDefinition prop, HashSet<MethodDefinition> propMethods = null)
    Parameters
    Type Name Description
    Mono.Cecil.TypeDefinition targetType
    Mono.Cecil.PropertyDefinition prop
    System.Collections.Generic.HashSet<Mono.Cecil.MethodDefinition> propMethods

    PatchRefs()

    Declaration
    public virtual void PatchRefs()

    PatchRefs(ModuleDefinition)

    Declaration
    public virtual void PatchRefs(ModuleDefinition mod)
    Parameters
    Type Name Description
    Mono.Cecil.ModuleDefinition mod

    PatchRefsInMethod(MethodDefinition)

    Declaration
    public virtual void PatchRefsInMethod(MethodDefinition method)
    Parameters
    Type Name Description
    Mono.Cecil.MethodDefinition method

    PatchRefsInType(TypeDefinition)

    Declaration
    public virtual void PatchRefsInType(TypeDefinition type)
    Parameters
    Type Name Description
    Mono.Cecil.TypeDefinition type

    PatchType(TypeDefinition)

    Patches the type (adds new members).

    Declaration
    public virtual void PatchType(TypeDefinition type)
    Parameters
    Type Name Description
    Mono.Cecil.TypeDefinition type

    Type to patch into the input module.

    PatchWasHere()

    Declaration
    public virtual TypeDefinition PatchWasHere()
    Returns
    Type Description
    Mono.Cecil.TypeDefinition

    PostRelinker(IMetadataTokenProvider, IGenericParameterProvider)

    Declaration
    public virtual IMetadataTokenProvider PostRelinker(IMetadataTokenProvider mtp, IGenericParameterProvider context)
    Parameters
    Type Name Description
    Mono.Cecil.IMetadataTokenProvider mtp
    Mono.Cecil.IGenericParameterProvider context
    Returns
    Type Description
    Mono.Cecil.IMetadataTokenProvider

    PrePatchModule(ModuleDefinition)

    Pre-Patches the module (adds new types, module references, resources, ...).

    Declaration
    public virtual void PrePatchModule(ModuleDefinition mod)
    Parameters
    Type Name Description
    Mono.Cecil.ModuleDefinition mod

    Mod to patch into the input module.

    PrePatchNested(TypeDefinition)

    Declaration
    protected virtual void PrePatchNested(TypeDefinition type)
    Parameters
    Type Name Description
    Mono.Cecil.TypeDefinition type

    PrePatchType(TypeDefinition, Boolean)

    Patches the type (adds new types).

    Declaration
    public virtual void PrePatchType(TypeDefinition type, bool forceAdd = false)
    Parameters
    Type Name Description
    Mono.Cecil.TypeDefinition type

    Type to patch into the input module.

    System.Boolean forceAdd

    Forcibly add the type, no matter if it already exists or if it's MonoModRules.

    Read()

    Reads the main module from the Input stream / InputPath file to Module.

    Declaration
    public virtual void Read()

    ReadMod(Stream)

    Declaration
    public virtual void ReadMod(Stream stream)
    Parameters
    Type Name Description
    System.IO.Stream stream

    ReadMod(String)

    Declaration
    public virtual void ReadMod(string path)
    Parameters
    Type Name Description
    System.String path

    Relinker(IMetadataTokenProvider, IGenericParameterProvider)

    Declaration
    public virtual IMetadataTokenProvider Relinker(IMetadataTokenProvider mtp, IGenericParameterProvider context)
    Parameters
    Type Name Description
    Mono.Cecil.IMetadataTokenProvider mtp
    Mono.Cecil.IGenericParameterProvider context
    Returns
    Type Description
    Mono.Cecil.IMetadataTokenProvider

    ResolveRelinkTarget(IMetadataTokenProvider, Boolean, Boolean)

    Declaration
    public virtual IMetadataTokenProvider ResolveRelinkTarget(IMetadataTokenProvider mtp, bool relink = true, bool relinkModule = true)
    Parameters
    Type Name Description
    Mono.Cecil.IMetadataTokenProvider mtp
    System.Boolean relink
    System.Boolean relinkModule
    Returns
    Type Description
    Mono.Cecil.IMetadataTokenProvider

    RunCustomAttributeHandlers(ICustomAttributeProvider)

    Declaration
    public virtual void RunCustomAttributeHandlers(ICustomAttributeProvider cap)
    Parameters
    Type Name Description
    Mono.Cecil.ICustomAttributeProvider cap

    Write(Stream, String)

    Write the modded module to the given stream or the default output.

    Declaration
    public virtual void Write(Stream output = null, string outputPath = null)
    Parameters
    Type Name Description
    System.IO.Stream output

    Output stream. If none given, outputPath or default Output will be used.

    System.String outputPath

    Output path. If none given, output or default OutputPath will be used.

    Implements

    System.IDisposable

    Extension Methods

    MonoModRulesManager.ExecuteRules(MonoModder, TypeDefinition)
    Back to top Yet another C# modding swiss army knife.