利用.net反射调用 方法

2011-3-28
1. 利用.net反射调用 方法
  protected void invokeTheMethod(object theObject, string strMethod, object[] objParms)
        {
            Type objType = theObject.GetType();  //--得到对象的类型 cyj 2011-3-28
          
            MethodInfo method;  //--声明一个方法 cyj 2011-3-28
            try
            {
                method = objType.GetMethod(strMethod);  //--根据方法名称得到方法 cyj 2011-3-28
                method.Invoke(theObject, objParms);     //--连接类型与方法 cyj 2011-3-28
            }
            catch (Exception)
            {
                throw (new Exception("刷新分页控件出错"));
                // Response.Write(ex.ToString());
            }
        }

调用该方法:invokeTheMethod(uControls,"getString",null);

总结:1. 得到对象(用户控件uControls)的类型
      2. 声明一个方法
      3. 将方法与类型相连;

摘自:http://www.pqshow.com/program/aspnet/201101/15525.html

 

 

最近在维护一个Extjs的项目,所以前提基本上都是js,利用.net后台的交互获取数据。

故利用反射来执行页面的一些方法,可以省下不少事情。代码如下:

page_load方法中,实现反射代码,并添加一个需反射执行的方法。先看一个没有参数的函数:

 

代码

   protected void Page_Load(object sender, EventArgs e)
        {
          
            
string methordName = "GetResString"
;
            
// 或者
  methordName = Request.QueryString["action"];
            Type t = this
.GetType();
            MethodInfo method = t.GetMethod(methordName);
            
if (method != null
)
            {
                Response.Write((
string)method.Invoke(this,null
));
            }
            
        }

    public string GetResString() 
    {
        
return "Test";

    }

 

 

 

 运行的结果页面就可以在页面上输出Test字样了。

 

 添加一个需传参数的反射例子。

如:

代码

   protected void Page_Load(object sender, EventArgs e)
        {
          
            
string methordName = "GetResString"
;
            
// 或者
  methordName = Request.QueryString["action"];
            Type t = this
.GetType();
            
object[] paras={"小强",23};//方法需调用的参数

            Type[] typepara=new Type[paras.Length];
            
for(int i=0
;i<paras.Length;i++)
            {
                 typepara[i]=paras[i].GetType();
            }
            MethodInfo method = t.GetMethod(methordName,typepara);
            
if (method != null
)
            {
                Response.Write((
string)method.Invoke(this
, paras));
            }
            
        }

        
public string GetResString(string name,int
 age) 
        {
            
return string.Format("{0}已经{1}岁了"
, name, age);
        }

 

 

页面执行结果为:小强已经23岁了。

如果前台页面用:..Default.aspx?action=GetResString 也能达到同样的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值