zoukankan      html  css  js  c++  java
  • asp.net一般处理程序利用反射定位方法

    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,这就是利用反射原理调用指定方法,是不是感觉瞬间简化多了呢!

  • 相关阅读:
    1074 食物链 (并查集)
    2832 6个朋友
    病毒 (拓扑)
    4735 烦人的幻灯片 (拓扑)
    JavaScript中变量的LHS引述和RHS引用
    td自动换行
    SQL Server 中的 NOLOCK 到底是什么意思?
    jQuery中遇到的坑
    jQuery中attr()函数 VS prop()函数
    Javascript刷新页面的几种方法
  • 原文地址:https://www.cnblogs.com/duanjt/p/5382610.html
Copyright © 2011-2022 走看看