zoukankan      html  css  js  c++  java
  • Controller

    • 查找controller时,会按照1创建路由时指定的命名空间,2ControllerFactory的命名空间列表,3全名匹配.
    • 在创建路由时指定的命名空间,会放到Route的DataTokens中,对应到RouteData的DataTokens中.AreaReg..的时候,创建路由时如果不指定命名空间,如果Area..类有命名空间,会使用这个命名空间+*,加入到DataTokens中.如果这个类没有命名空间,则namespaceFallback属性为True,使用后被命名空间.
    • ControllerFactory.GetControllerSessionBehavior方法也是首先找到Controller的类,读取类的特性
    • List.Any()可以用于判断是否包含任何元素
    • 基于IOC的Controller激活有
      1. 自定义ControllerFactory,在其内部定义IOC,在GetControllerlnstance方法中调用IOC,创建Controller对象.
      2. DefaultControllerFactory内部实现机制是通过ControllerActivator实现Controller的创建的,DefaultControllerFactory有一个构造函数接收ControllerActivator的实例.所以可以创建ControllerActivator的子类,在其内部定义IOC,在Create中调用IOC,创建Controller

                 如果不指定ControllerActivator,则使用默认的内部类DefaultControllerActivator.

    public interface IControllerActivator
            {
    
                IController Create(RequestContext requestContext, Type controllerType);
    
            }

          3.DefaultControllerActivator是一个内部类,外部不能使用,其构造函数中包含一个IDepencyResolver,如果不指定的话会使用       DependencyResolver.Current,而这个Current中默认使用的是DefaultDependencyResolver.DependencyResolver有一个方法SetResover可以设置使用的Resolver.因此,可以自定义Resolver,调用Set方法设置默认的Resolver.

    DependencyResolver 是一个非常重要的组件,可以将其视为ASP.NET MVC 框架内部使用的IoC 容器。它不只是用于针对Controller 的激活,框架内部很多组件的提供最终都依赖于它。

    //Controller激活的三种方式
    
            //1
    
            //MyControllerFactory
    
            //ControllerBuilder.Current.SetControllerFactory(MyControllerFactory);
    
            //2
    
            //MyControllerActivtor
    
            //DefaultControllerFactory factory = new DefaultControllerFactory(MyControllerActivtor);
    
            //ControllerBuilder.Current.SetControllerFactory(factory);
    
            //3
    
            //MyDependencyResolver
    
            //DependencyResolver.SetResolver(MyDependencyResolver);
  • 相关阅读:
    MySQL中tinytext、text、mediumtext和longtext详解
    端口冲突
    Form绑定
    Uri绑定
    只绑定Get参数
    Linux:Day4(上) 文件管理、管道
    selenium之frame
    selenium之选项卡管理
    Request
    爬虫常用库
  • 原文地址:https://www.cnblogs.com/zhangliming/p/4564751.html
Copyright © 2011-2022 走看看