ModFactory.PatchMethod - SavingPot/SkyOdyssey GitHub Wiki
void PatchMethod()
作用:修改一个方法
被修改的方法的参数中可包括以下特殊参数
| 参数名 | 作用 | 注意 |
|---|---|---|
| 方法参数名 | 比如被修改方法是 Add(int a, int b), 那么在补丁中定义一个参数 int a 就可以读写 a 的值 | 注意类型匹配, 如果 A 继承自 B, 想要修改 A 的值,可以用 A obj, 也可以用 B obj, 也可以用 object obj |
| __instance | 类似于关键字 this,可以访问原方法的实例 | |
| __result | 可以用来访问或篡改返回值 | __result 的类型必须与方法返回值匹配 |
| MethodBase __originalMethod | 识别补丁所附加的方法 | 不能用它调用原始方法 |
| object[] __args | 一次性获取原方法的所有参数 | 这会带来一些小开销 |
| __state | 补丁可以使用名为 __state 的参数将信息存储在前缀方法中,这些信息可以在后缀方法中被访问。就像是一个局部变量。它可以是任何类型,并且您负责初始化前缀中的值 | |
| ___fields | 以三个下划线开头的参数名称(如 __number)可用于读取/写入名称减去下划线的私有字段。 | 要写入字段,需要使用 ref 关键字,如 ref string ___name |