Skip to content

Commit

Permalink
Merge pull request #502 from Meigyoku-Thmn/patch-1
Browse files Browse the repository at this point in the history
Add an example for patch factory methods
  • Loading branch information
pardeike committed Oct 16, 2022
2 parents 3fe1b46 + 0255bd1 commit d0da150
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions Harmony/Documentation/articles/patching.md
Expand Up @@ -63,6 +63,25 @@ If you prefer manual patching, you can use any method name or class structure yo

![note] Patch methods _must_ be static but you can define them public or private. They cannot be dynamic methods but you can write static patch factory methods that return dynamic methods.

```csharp
[HarmonyPatch(...)]
class Patch
{
// the return type of factory methods can be either MethodInfo or DynamicMethod
[HarmonyPrefix]
static MethodInfo PrefixFactory(MethodBase originalMethod)
{
// return an instance of MethodInfo or an instance of DynamicMethod
}

[HarmonyPostfix]
static MethodInfo PostfixFactory(MethodBase originalMethod)
{
// return an instance of MethodInfo or an instance of DynamicMethod
}
}
```

### Method names

Manual patching knows four main patch types: **Prefix**, **Postfix**, **Transpiler** and **Finalizer**. If you use attributes for patching, you can also use the helper methods: **Prepare**, **TargetMethod**, **TargetMethods** and **Cleanup** as explained below.
Expand Down

0 comments on commit d0da150

Please sign in to comment.