一、看源碼MVC如何實例化控制器?

咱們知道MVC請求進來,而後路由匹配,而後找到控制器和Action,最後會調用Action方法,可是你們想一想控制器是個普通的類,Action是個普通的實例方法,要想調用Action必須先實例化控制器,那麼MVC中如何實例化控制器的呢?ui

一、MVC請求進來會先進入到UrlRoutingHandler裏的ProcessRequestthis

 二、而後進入到MVCHandler裏的ProcessRequestspa

三、MVCHandler裏的ProcessRequestInit,在這裏面實例化控制器blog

一、string requiredString = this.RequestContext.RouteData.GetRequiredString("controller");路由匹配以後產生的結果集RouteData,獲得requiredString字符串,requiredString是個完整類型名稱路由

二、this.ControllerBuilder.GetControllerFactory();獲得默認的控制工廠DefaultControllerFactory,而後經過DefaultControllerFactory的CreateController方法利用反射去建立Controller實例字符串

相關文章
相關標籤/搜索