深入分析ASP.NET Mvc 1.0 – 1. 深入MvcHandler
if (controllerFactoryType == null) { throw new ArgumentNullException ("controllerFactoryType"); } if (!typeof(IControllerFactory).IsAssignableFrom (controllerFactoryType)) { throw new ArgumentException( String.Format( CultureInfo.CurrentUICulture, MvcResources.ControllerBuilder_MissingIControllerFactory, controllerFactoryType), "controllerFactoryType"); } _factoryThunk = delegate() { try { return (IControllerFactory)Activator.CreateInstance (controllerFactoryType); } catch (Exception ex) { throw new InvalidOperationException( String.Format( CultureInfo.CurrentUICulture, MvcResources.ControllerBuilder_ErrorCreatingControllerFactory, controllerFactoryType), ex); } }; } 只需要将我们自定义并继承自IControllerFactory接口的类的一个实例或type传入就 可以。 4. 根据controll name创建controller对象
调用DefaultControllerFactory类中的CreateController方法创建controller类。 CreateController(…)方法的具体代码如下:
这里比较简单,首先执行GetControllerType(controllerName)找到对应的controll type, 再调用GetControllerInstance(controllerType) 反射出具体的controll类,先来 看看GetControllerType(…)方法中的代码:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |