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);
  • 相关阅读:
    i3wm 入门
    install kali on my x200
    Linux下pn532板子测试学校水卡
    Linux下常用工具
    未能加载文件或程序集"Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad
    SqlServer 日期函数
    asp.net 网站部署出错-未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
    win7中未加载类型“System.ServiceModel.Activation.HttpModule”
    ASP.NET开发工具用到的密匙与注意事项
    TCP/TP 三次握手
  • 原文地址:https://www.cnblogs.com/zhangliming/p/4564751.html
Copyright © 2011-2022 走看看