我不是很了解你的用意,不过你 试试看这个能不能给你思路!
但是我觉得你那一样反射去做的话就会造成所有的待用都只能调用到最后一个函数,因为你的委托只有一个,反射也是委托,你改变其中的一个,其他都会跟着变,结果就是public viod myProc_1(byte[] data) 被调用,其他的都调用不了,所以你的代码需要改造 如下
声明dic:
Dictionary
反射,假如你的方法在Demo类中,反射添加如下
try
{
Demo demo = new Demo();
MethodInfo[] methods = demo.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase);
//获取想要的方法集合,"myProc"是方法查找关键字
int i = 0;
foreach (MethodInfo t in methods.Where(F => F.Name.Contains("myProc")))
{
Func.Add(i,t);
i++;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
调用: 非静态方法
demo = new Demo();
Func[0].Invoke(demo, new object[1] { new byte[1] });
Func[1].Invoke(demo, new object[1] { new byte[2] });
如果是静态的方法
Func[0].Invoke(null, new object[1] { new byte[1] });
Func[1].Invoke(null, new object[1] { new byte[2] });
就这样...
Func.add(i,t as myProc);
Assembly ass = Assembly.LoadFrom("System.Windows.Forms.dll"); //加载一个程序集
var form = ass.GetType("System.Windows.Forms.Form"); //获取一个类型,需要全名称
Dictionary
//form.GetMethods(BindingFlags.Public| BindingFlags.Instance) 可以指定 方法的一些特性
foreach(var mi in form.GetMethods())
{
d.Add(mi.Name, mi); //添加到字典中
}