【发布时间】:2018-03-08 19:01:45
【问题描述】:
我正在尝试导入一个方法及其 IL 代码,例如callvirt instance !!0 [UnityEngine]UnityEngine.GameObject::AddComponent<class RealMono>()RealMono 是我创建的 MonoBehavior。
我不知道获得通用方法。
【问题讨论】:
标签: il mono.cecil
我正在尝试导入一个方法及其 IL 代码,例如callvirt instance !!0 [UnityEngine]UnityEngine.GameObject::AddComponent<class RealMono>()RealMono 是我创建的 MonoBehavior。
我不知道获得通用方法。
【问题讨论】:
标签: il mono.cecil
有效!!
using System.Reflection;
...
MemberInfo[] ms = typeof(GameObject).GetMember("AddComponent*", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance);
MethodInfo mm = null;
foreach(MemberInfo m in ms) {
if (((MethodInfo)m).IsGenericMethod) {
mm = (MethodInfo)m;
mm = mm.MakeGenericMethod(mm);
break;
}
}
il.InsertBefore(method.Body.Instructions[0], il.Create(OpCodes.Callvirt, assembly.MainModule.Import(mm)));
【讨论】: