利用.Net中的反射动态调用方法

.Net中的反射功能是极其强大的,本篇先用他来动态调用方法

看如下一个类

Public Class A

{

     public void InvokeMethod(string methodname)

    {

           Type p=this.GetType();

           MethodInfo m=p.GetMethod(methodname);

           if(m!=null)

              m.Invkoe(this,new object[0])

     }

     public void MethodA()

    {

    }

   

     public void MethodB()

    {

    }

}

上面的类中在InvokeMethod方法中传进MethodA或MethodB字符串就能执行MethodA或MethodB方法了

当然还可以在进行如下改进:

   public object FunctionA(int par1,object par2)

{

    do something...

    return some

}

 public object InvokeMethod(string methodname,object[] paramet)

{

           Type[] ptype=new Type[paramet.Length];

            for(int i=0;i<ptype.Length;i++)

                ptype[i]=paramet[i].GetType();

           Type p=this.GetType();

           MethodInfo m=p.GetMethod(methodname,ptype);

           if(m!=null)

              return m.Invkoe(this,paramet);

           return null

}

调用InvokeMethod并传进方法名称和方法参数就能调用相应的方法,并返回值.

哈哈,就说这些,投石问路哈

posted on 2010-08-01 15:14  悠竹客  阅读(3576)  评论(0编辑  收藏  举报

导航