运行时创建类,用invoke()函数,怎么传递ref 或out参数 急在线等待

anmeier 2005-10-26 02:04:43
.........
............
.............
object obj = Activator.CreateInstance(t);
MethodInfo mi = t.GetMethod(methodname);
return mi.Invoke(obj,args);
//args是个参数组,用来传递参数值,可怎么传递ref或out变量呢?
//高手救!!!
...全文
195 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
DoDone 2006-06-16
  • 打赏
  • 举报
回复
楼主解决了吗,能告知解决方法吗?
MSDN有说明,似乎应该和benq2003(Visual奎#.Net 2005)说的一样,但是我照做,却不行。

If the method or constructor represented by this instance takes a ref parameter (ByRef in Visual Basic), no special attribute is required for that parameter in order to invoke the method or constructor using this function. Any object in this array that is not explicitly initialized with a value will contain the default value for that object type. For reference-type elements, this value is a null reference (Nothing in Visual Basic). For value-type elements, this value is 0, 0.0, or false, depending on the specific element type.
jinzhouk 2005-10-27
  • 打赏
  • 举报
回复
首先定义一个参数类:
private class SendEventArgs : EventArgs
{
public string Arg1;
public string Arg2;
}

调用之前初始化

e.Arg1 = "arg1";
e.Arg2 = "arg2";

调用的方法
return mi.Invoke(obj,new object[] {e});

以上就是我的做法。没有测试过,仅供你参考。
Karl_He 2005-10-27
  • 打赏
  • 举报
回复
很简单的,遇到 ref 或 out 类型的参数.一样把 参数名传递给它就可以了.
我在工作中也遇到了
anmeier 2005-10-27
  • 打赏
  • 举报
回复
jinzhouk 麻烦你说的详细一点,比如我上面的那个数组args,假如我是这样定义的:
object[] args=new object[]{"arg1","arg2",.....};
那我怎么把参数放到数组里呢
jinzhouk 2005-10-26
  • 打赏
  • 举报
回复
你的args中的参数可以是个自定义消息类 SendEventArgs e。通过这个类就可以实现ref或者out的功能了。
private class SendEventArgs : EventArgs
{
public int SendTotal;
}
JadyWang 2005-10-26
  • 打赏
  • 举报
回复
帮顶,学习…………

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧