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