相关代码如下:
public static object[] FindFunction(string methodName, object[] pr)
{
Assembly a = Assembly.LoadFrom(dllFilePath);//加载DLL
if (a == null)
{
throw new Exception("Can't Find The File");
}
object o = a.CreateInstance("namespace.class");//寻找类
if (o == null)
{
throw new Exception("Can't Create The Object");
}
MethodInfo m = o.GetType().GetMethod(methodName);//调用方法
if (m == null)
{
throw new Exception("Can't Find The Method of " + methodName);
}
return (object)m.Invoke(o, pr);//执行
}
以下是一个函数的原型:
public static int CheckUserCanLogin(object [] pr, out string UserName)以下是调用:
FindFunction("CheckUserCanLogin", new object[] { pr, UserName });问题是:
怎么获取最后一个返回参数的值.
public static object[] FindFunction(string methodName, object[] pr)
{
Assembly a = Assembly.LoadFrom(dllFilePath);//加载DLL
if (a == null)
{
throw new Exception("Can't Find The File");
}
object o = a.CreateInstance("namespace.class");//寻找类
if (o == null)
{
throw new Exception("Can't Create The Object");
}
MethodInfo m = o.GetType().GetMethod(methodName);//调用方法
if (m == null)
{
throw new Exception("Can't Find The Method of " + methodName);
}
return (object)m.Invoke(o, pr);//执行
}
以下是一个函数的原型:
public static int CheckUserCanLogin(object [] pr, out string UserName)以下是调用:
FindFunction("CheckUserCanLogin", new object[] { pr, UserName });问题是:
怎么获取最后一个返回参数的值.
object[] pr = new object[]{...};
string username;
object[] parms = new object[]{pr,username};FindFunction("CheckUserCanLogin", parms);
object[] pr = new object[]{...};
string username;
object[] parms = new object[]{pr,username};FindFunction("CheckUserCanLogin", parms);
FindFunction("CheckUserCanLogin", new object[] { pr, UserName });
FindFunction("CheckUserCanLogin", parms);
呵呵,现在问题是返回的UserName 根本就没有改变
这时候UserName引用的一个copy被保留在new object[]数组里面,传递给CheckUserCanLogin。所以被改变的是这个在数组里面的饮用,不是UserName自己。修改如下:
object[] params = new object[]{ pr, UserName };
FindFunction("CheckUserCanLogin", params);UserName = params[1]; // <---- 保改变后得值copy回来