您的位置:首页 > 编程语言 > ASP

asp.net一般处理程序利用反射定位方法

2016-04-12 14:38 671 查看
asp.net的一般处理程序我想大家用得都不少,经常会如下如下的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Web;

namespace MyWeb
{
/// <summary>
/// GetMsg 的摘要说明
/// </summary>
public class GetMsg : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
String fn=context.Request["fn"];
//根据参数判断执行哪一个方法
switch(fn){
case "Search":
Search(context);
break;
case "Search":
Add(context);
break;
}
}

public void Search(HttpContext context)
{
context.Response.Write("新增");
}

public void Add(HttpContext context)
{
context.Response.Write("新增");
}

public bool IsReusable
{
get
{
return false;
}
}
}
}


看到如上代码可能觉得没有问题,但是如果我们新增一个方法,那么就需要在ProcessRequest方法的switch中增加一个对应的映射,感觉挺麻烦的,现将ProcessRequest方法修改如下:

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
String fn=context.Request["fn"];
MethodInfo method= this.GetType().GetMethod(fn);
if (method != null)
{
method.Invoke(this, new object[] { context });
}
}


OK,这就是利用反射原理调用指定方法,是不是感觉瞬间简化多了呢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: