我是一个有用的助手,可以为您翻译文本。以下是需要翻译的内容:
以下几种方式均返回相同的内存地址:
我正在尝试获取泛型类中方法的函数指针。我一直在使用MethodInfo.MethodHandle.GetFunctionPointer()来实现这一目标,但最近我一直在处理泛型类时,上述方法并没有按照我的预期工作。
考虑下面的示例:
public class Example<T>
{
public bool doSomething()
{
/*some work*/
return true;
}
}
以下几种方式均返回相同的内存地址:
typeof(Example<int>).GetMethod("doSomething").MethodHandle.GetFunctionPointer()
typeof(Example<bool>).GetMethod("doSomething").MethodHandle.GetFunctionPointer()
typeof(Example<SomeClass>).GetMethod("doSomething").MethodHandle.GetFunctionPointer()
我不确定为什么会这样。有人可以解释一下吗?在内存中是否只有一个版本的该函数?
这肯定引起了一些注意。我正在修改游戏代码,但没有访问源代码。通过此方式注入代码是这项工作中常见的做法。游戏的最终用户许可协议明确允许这种注入,只要不直接修改原始dll文件即可。