asp.net利用反射调用页面定义的方法

最近在维护一个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 也能达到同样的效果。

当然反射里面的东西比这个多多了,这只是个入门的东西,详细的大家可以查阅其他文档。

 

 

 

posted @ 2011-01-25 11:14  DreamZero  阅读(1827)  评论(0编辑  收藏  举报