public interface IRouteHandler { IHttpHandler GetHttpHandler(RequestContext requestContext); }
public class MvcRouteHandler : IRouteHandler { protected virtual IHttpHandler GetHttpHandler(RequestContext requestContext) { return new MvcHandler(requestContext); } #region IRouteHandler Members IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext) { return GetHttpHandler(requestContext); } #endregion }
这里为什么先用虚方法?
虚方法的好处在于:以后可以被其它类直接继承该类,并且重写这个方法(比如都是要实现MVC模式的,但是可能某些特殊的MVC请求模式需要验证用户登录信息等,可能根据request参数判断),那么直接继承这个类重写这个方法,判断request获取参数做相应处理即可。
那为什么后面还要在写一个
IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext){}
函数呢?
@hEnius: 第二个方法实际上是调用第一个保护方法的。这样做的好处在于对于页面(接口)而言,它无需知道子类是如何实现重写了那个保护方法,只要公开调用那个公开的public(实现接口的方法)就可以了。
虚方法可以被重写,如果从MvcRouteHandler派生子类那么可以重写该方法。
//也可以直接这么写。 public virtual IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext) { return GetHttpHandler(requestContext); }