WebMar 9, 2024 · [ HarmonyPatch ( typeof ( Dialog_FormCaravan ))] [ HarmonyPatch ( "CheckForErrors" )] public static class Dialog_FormCaravan_CheckForErrors_Patch { static IEnumerable < CodeInstruction > Transpiler ( IEnumerable < CodeInstruction > instructions ) { // do something } } Some quick remarks: The patch annotations specify the target … WebJul 20, 2024 · When patching a generic method with a concrete type, the patch gets called for all types instead of just the concrete type specified. If the method is patched twice with two different concrete types, only the last patch is called. This causes a lot of errors as the original method is also called with the wrong type. To Reproduce
Clarify the actual code for patching overloaded methods …
Web56 lines (30 sloc) 3.63 KB Raw Blame Patching Common injected values Each patch method (except a transpiler) can get all the arguments of the original method as well as the instance if the original method is not static and the return value. You only need to define the parameters you want to access. __instance WebJan 16, 2024 · Harmony - A library for patching, replacing and decorating .NET and Mono methods during runtime Harmony is the current best practice for changing the runtime … may roster 2022
Patching - Pardeike
WebEach patch method (except a transpiler) can get all the arguments of the original method as well as the instance if the original method is not static and the return value. You only need to define the parameters you want to access. __instance Patches can use an argument called __instance to access the instance value if original method is not static. WebWorks with more .NET versions. Inline prevention for Mono. 4th patch type: Finalizer - for handling and manipulating exceptions. Reverse Patching (original onto one of your stub methods) Convenience extension methods for CodeInstruction. Selective debug log with [HarmonyDebug] annotation - works even with future changes of the method. WebPatch methods Inside the class Harmony searches for methods with the specific names TargetMethod (), Prepare (), Prefix (), Postfix () or Transpiler (). Instead of relying on those names, you can also use the method … may roster template