首页 新闻 会员 周边

c# 中关于获取方法名的办法

0
悬赏园豆:5 [已关闭问题] 关闭于 2010-12-31 10:14

情景描述:

一个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分,只要可以实现我会立刻增加分值并结贴,东宫承诺!

东宫有喜的主页 东宫有喜 | 初学一级 | 园豆:3
提问于:2010-12-20 16:31
< >
分享
所有回答(1)
0

反射、根据字符名称、反射得到函数的实体。

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).
邢少 | 园豆:10926 (专家六级) | 2010-12-20 17:27
第一句获得程序集 第二句获得指定的类,括号中的Test.Process是命名空间加类名吗? 第三句获得指定的方法 第四句我可以理解为利用tp的信息,生成一个Test.Process实例吗? 第五句 Method的Invoke方法需要提供类型的实例,然后执行这个方法,res为接收该方法的返回值。 不知道我理解的对不对,请点评下。 然后我还是不知道,如何获得一个方法的方法名,例如我有一个类型里的一个方法(Test),可以接受用户放入这样的参数:Test(MyClass.MyMethod()),在Test方法中如何可以获得这个MyMethod的方法名,类名呢? 谢谢
支持(0) 反对(0) 东宫有喜 | 园豆:3 (初学一级) | 2010-12-21 09:50

非常有用,正式我在找的。

支持(0) 反对(0) 林J | 园豆:202 (菜鸟二级) | 2012-09-18 12:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册