1、看源码MVC如何实例化控制器?

我们知道MVC请求进来,然后路由匹配,然后找到控制器和Action,最后会调用Action方法,但是大家想想控制器是个普通的类,Action是个普通的实例方法,要想调用Action必须先实例化控制器,那么MVC中如何实例化控制器的呢?

1、MVC请求进来会先进入到UrlRoutingHandler里的ProcessRequest

 2、然后进入到MVCHandler里的ProcessRequest

3、MVCHandler里的ProcessRequestInit,在这里面实例化控制器

1、string requiredString = this.RequestContext.RouteData.GetRequiredString("controller");路由匹配之后产生的结果集RouteData,得到requiredString字符串,requiredString是个完整类型名称

2、this.ControllerBuilder.GetControllerFactory();得到默认的控制工厂DefaultControllerFactory,然后通过DefaultControllerFactory的CreateController方法利用反射去创建Controller实例

posted @ 2019-08-28 18:20  David.Meng  阅读(682)  评论(0编辑  收藏  举报