.net 反射方法调用(转)
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 也能达到同样的效果。