情景描述:
一个SucceedTest类,用来存储方法名:
两个属性:count(计数) , builder(方法名,string类型)
一个拼接方法名的方法:
public virtual void ink(string someone)
{
count++;
builder += someone + "|";
}
一个测试类TestClass,一个静态方法Test1,一个实例方法Test2
在获取方法名称时,我使用的是
Succ.ink(typeof(TestClass).GetMethod("Test1").Name);
Succ.ink(typeof(TestClass).GetMethod("Test2").Name);
但是,当我想把这些方法取出来执行的时候,我发现这是不能实现的,因为我只存储的方法名(Test1,Test2)。
问题:
如果可以让我在执行的时候根据方法名找到该方法并执行,或者可以告诉我c#如果定位一个方法,需要什么信息,如果获得?
谢谢,本题50分,只要可以实现我会立刻增加分值并结贴,东宫承诺!
反射、根据字符名称、反射得到函数的实体。
public string demo()
{
return "demo";
}
Assembly ab = Assembly.GetExecutingAssembly();//得到当前运行的程序集
Type tp = ab.GetType("Test.Process");//得到指定的类,
MethodInfo mi = tp.GetMethod("demo");//得到方法“demo()”函数的信息
object ob = Activator.CreateInstance(tp);//对得到的tp实例化对象
调用ob对象的mi中的方法,null:没有参数;有参数:需要传入一个object数组
object res = mi.Invoke(ob,null);//
messagebox.show(res).
非常有用,正式我在找的。