您现在的位置是:首页 >

框架已安装 但未激活 ASP.NET MVC 4框架揭秘:Controller的激活(2)[2]

火烧 2022-08-08 08:55:04 1037
ASP.NET MVC 4框架揭秘:Co troller的激活(2)[2]    u lic cla Glo al : Sy tem We Htt A licatio   {   rotected v

ASP.NET MVC 4框架揭秘:Controller的激活(2)[2]  

  public class Global : System Web HttpApplication

  {

  protected void Application_Start(object sender EventArgs e)

  {

  //其他操作

  ControllerBuilder Current SetControllerFactory(

  new DefaultControllerFactory())

  }

  }

  作为默认ControllerFactory的DefaultControllerFactory类型定义如下 激活Controller对象的前提是能够正确解析出Controller的真实类型 作为CreateController方法输入参数的controllerName仅仅表示Controller的名称 我们需要加上Controller字符后缀作为类型名称 在DefaultControllerFactory类型被加载的时候(静态构造函数被调用) 通过BuildManager加载所有引用的程序集 并得到所有实现了接口IController的类型并将其缓存起来 在CreateController方法中根据Controller的名称和命名空间从保存的Controller类型列表中得到对应的Controller类型 并通过反射的方式创建它

  public class DefaultControllerFactory : IControllerFactory

  {

  private static List<Type> controllerTypes = new List<Type>()

  static DefaultControllerFactory()

  {

  foreach (Assembly assembly in BuildManager GetReferencedAssemblies())

框架已安装 但未激活 ASP.NET MVC 4框架揭秘:Controller的激活(2)[2]

  {

  foreach (Type type in assembly GetTypes() Where(

  type => typeof(IController) IsAssignableFrom(type)))

  {

  controllerTypes Add(type)

  }

  }

  }

  public IController CreateController(RequestContext requestContext

  string controllerName)

  {

  string typeName = controllerName + Controller ;

  Type controllerType = controllerTypes FirstOrDefault(

  c => string Compare(typeName c Name true) == )

  if (null == controllerType)

  {

  return null;

  }

  return (IController)Activator CreateInstance(controllerType)

  }

  }

      返回目录ASP NET MVC 框架揭秘

      编辑推荐

      ASP NET开发培训视频教程

      Microsoft NET框架程序设计视频教程

       Java程序性能优化 让你的Java程序更快 更稳定

       Visual C++音频/视频技术开发与实战

lishixinzhi/Article/program/net/201311/16107  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码