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

  • 相关阅读:
    09-异常处理-成绩判断异常
    继承与多态———动手动脑
    课下作业04-2String的使用方法
    课下作业04-1字符串加密
    课下作业03-2动手动脑及验证
    课下作业03-1请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?
    课下作业02-动手动脑
    Myschool试题
    使用ADO.NET
    模糊查询和聚合函数
  • 原文地址:https://www.cnblogs.com/duanjt/p/5382610.html
Copyright © 2011-2022 走看看