zoukankan      html  css  js  c++  java
  • 实现HttpHandlerFactory的方法

    View Code
      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Web;
      5 
      6 namespace WebApplication1
      7 {
      8    // HttpHandlerFactory 用法
      9     //by Jxb 
     10     //at 2012年6月8日17:00:22
     11 
     12 
     13     //web.config
     14      /*<httpHandlers>
     15           <add verb="*" path="*" type="WebApplication1.MyHandler,WebApplication1"/>
     16       </httpHandlers>
     17     */
     18 
     19     public  class _Customer
     20     {
     21         public _Customer()
     22         {
     23             this.a = 1;
     24             this.b = 2;
     25         }
     26 
     27         int a, b = 0;
     28     }
     29     /// <summary>
     30     /// Summary description for Handler1
     31     /// </summary>
     32 
     33     public class MyHandler : IHttpHandlerFactory
     34     {
     35 
     36 
     37         public static T Factory<T>() where T : new()
     38         {
     39             return new T();
     40         }
     41         #region IHttpHandlerFactory 成员
     42 
     43         public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
     44         {
     45 
     46             string fname = url.Substring(url.IndexOf('/') + 1);
     47             while (fname.IndexOf('/') != -1)
     48                 fname = fname.Substring(fname.IndexOf('/') + 1);
     49             string cname = fname.Substring(0, fname.IndexOf('.'));
     50             string className = "WebApplication1." + cname;
     51 
     52             object h = null;
     53 
     54             try
     55             {
     56 
     57                 //测试工厂方法,相当于下面的Activator.CreateInstance
     58                 //_Customer ab = Factory<_Customer>();
     59 
     60                 // 采用动态反射机制创建相应的IHttpHandler实现类。
     61                 h = Activator.CreateInstance(Type.GetType(className));
     62             }
     63             catch (Exception e)
     64             {
     65                 throw new HttpException("工厂不能为类型" + cname + "创建实例。", e);
     66             }
     67 
     68             return (IHttpHandler)h;
     69         }
     70 
     71         public void ReleaseHandler(IHttpHandler handler)
     72         {
     73 
     74         }
     75 
     76         #endregion
     77     }
     78 
     79 
     80 
     81 
     82 
     83     public class Handler1 : IHttpHandler
     84     {
     85         #region IHttpHandler 成员
     86 
     87         public bool IsReusable
     88         {
     89             get { return true; }
     90         }
     91 
     92         public void ProcessRequest(HttpContext context)
     93         {
     94             context.Response.Write("<html><body><h1>来自Handler1的信息。</h1></body></html>");
     95         }
     96 
     97         #endregion
     98     }
     99 
    100     public class Handler2 : IHttpHandler
    101     {
    102         #region IHttpHandler 成员
    103 
    104         public bool IsReusable
    105         {
    106             get { return true; }
    107         }
    108 
    109         public void ProcessRequest(HttpContext context)
    110         {
    111             context.Response.Write("<html><body><h1>来自Handler2的信息。</h1></body></html>");
    112         }
    113 
    114         #endregion
    115     }
    116 }
  • 相关阅读:
    【2020-11-16】就是自己的松散意识在作怪
    JQuery 事件
    JQuery DOM 有关代码练习
    JQuery中的DOM操作
    主题简介 ASP .NET
    JQuery 选择器 *很重要 多记
    JQuery 基础
    Ajax 获取数据代码
    Ajax 介绍
    JavaScript 基础二
  • 原文地址:https://www.cnblogs.com/Loofah/p/2542034.html
Copyright © 2011-2022 走看看