Skip to main content

调用dll的函数

调用dll的函数

appdomain.Invoke("类名", "方法名", 对象引用, 参数列表);

调用无参数静态方法

//调用无参数静态方法,appdomain.Invoke("类名", "方法名", 对象引用, 参数列表);
appdomain.Invoke("HotFix_Project.InstanceClass", "StaticFunTest", null, null);

调用带参数的静态方法

Debug.Log("调用带参数的静态方法");
appdomain.Invoke("HotFix_Project.InstanceClass", "StaticFunTest2", null, 123);

通过IMethod调用方法

//预先获得IMethod,可以减低每次调用查找方法耗用的时间
IType type = appdomain.LoadedTypes["HotFix_Project.InstanceClass"];
//根据方法名称和参数个数获取方法
IMethod method = type.GetMethod("StaticFunTest2", 1);

appdomain.Invoke(method, null, 123);

通过无GC Alloc方式调用方法

IMethod method = type.GetMethod("StaticFunTest2", 1);
using (var ctx = appdomain.BeginInvoke(method))
{
ctx.PushInteger(123);
ctx.Invoke();
}

指定参数类型来获得IMethod

Debug.Log("指定参数类型来获得IMethod");
IType intType = appdomain.GetType(typeof(int));
//参数类型列表
List<IType> paramList = new List<ILRuntime.CLR.TypeSystem.IType>();
paramList.Add(intType);
//根据方法名称和参数类型列表获取方法
method = type.GetMethod("StaticFunTest2", paramList, null);
appdomain.Invoke(method, null, 456);