C# 反射

namespace Cao
{
 public class Zheng
 {
  public int Bi(string mao, ref double shui)
  {
   MessageBox.Show(mao);

   shui = 123.0;

   return 0;
  }
 }
}
private void button1_Click(object sender, EventArgs e)
{
 Cao.Zheng z = new Cao.Zheng();
 string fnName = "Bi";
 MethodInfo mi = z.GetType().GetMethod(fnName, BindingFlags.Instance | BindingFlags.Public);
 if (mi != null)
 {
  string mao = "a";
  double shui = 0.0;
  object[] objArray = new object[] { mao, shui };
  object obj = mi.Invoke(z, objArray);
  shui = (double)objArray[1];
 }
}

========================================================================================

function2

还没有解决吗?

如果名称空间及类的名称,如下可以执行指定类的方法:
string classFullName = "Cao.Zheng";//namespace+className
string methodName = "Bi";//methodName
Type type = Type.GetType(classFullName);//获取到类型
if (type != null)
{
 object objInst = Activator.CreateInstance(type);//建立类型实例
 if (objInst != null)
 {
  MethodInfo mi = type.GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public);//获取方法信息
  if (mi != null)
  {
   string mao = "a";
   double shui = 0.0;
   object[] objArray = new object[] { mao, shui };
   object obj = mi.Invoke(objInst, objArray);//调用方法
   shui = (double)objArray[1];//获取值
  }
 }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liycumt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值