知识大全 ASP.NET MVC 4框架揭秘:Controller类型(1)[2]

Posted 类型

篇首语:欠伸展肢体,吟咏心自愉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET MVC 4框架揭秘:Controller类型(1)[2]相关的知识,希望对你有一定的参考价值。

ASP.NET MVC 4框架揭秘:Controller类型(1)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  private static bool IsNamespaceMatch(string requestedNamespace

  string targetNamespace)

  

  if (!requestedNamespace EndsWith( *

  StringComparison OrdinalIgnoreCase))

  

  return string Equals(requestedNamespace targetNamespace

  StringComparison OrdinalIgnoreCase)

  

  requestedNamespacerequestedNamespace = requestedNamespace Substring(

  requestedNamespace Length * Length)

  if (!targetNamespace StartsWith(requestedNamespace

  StringComparison OrdinalIgnoreCase))

  

  return false;

  

  return ((requestedNamespace Length == targetNamespace Length) ||

  (targetNamespace[requestedNamespace Length] == ))

  

  private Type GetControllerType(IEnumerable<string> namespaces

  Type[] controllerTypes)

  

  var types = (from type in controllerTypes

  where namespaces Any(ns => IsNamespaceMatch(

  ns type Namespace))

  select type) ToArray()

  switch (types Length)

  

  case : return null;

  case : return types[ ];

  default: throw new InvalidOperationException( 具有多个匹配的Controller

  类型 )

  

  

  protected virtual Type GetControllerType(RouteData routeData

  string controllerName)

  

  //省略实现

  

  

  如上面的代码片段所示 ReflectedControllerFactory具有一个静态的controllerTypes字段用于保存所有被解析出来的Controller的类型 在静态构造函数中 调用BuildManager的GetReferencedAssemblies方法得到所有被引用的程序集 并得到所有定义其中的实现了IController接口的类型 这些类型全部被添加到通过静态字段controllerTypes表示的类型列表

  Controller类型的解析实现在受保护的GetControllerType方法中 在用于最终激活Controller对象的CreateController方法中 通过调用该方法得到与指定RequestContext和Controller名称相匹配的Controller类型 最终通过调用Activator的静态方法CreateInstance创建相应的Controller对象

  ReflectedControllerFactory中定义了两个辅助方法 其中IsNamespaceMatch用于判断Controller类型真正的命名空间是否与指定的命名空间(可能包含统配符)相匹配 进行字符比较是忽略大小写的 私有方法GetControllerType根据指定的命名空间列表和类型名称匹配的类型数组得到一个完全匹配的Controller类型 如果得到多个匹配的类型 直接抛出InvalidOperation异常 并提示具有多个匹配的Controller类型 如果找不到匹配类型 则返回Null

       返回目录 ASP NET MVC 框架揭秘

       编辑推荐

       ASP NET开发培训视频教程

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

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

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

cha138/Article/program/net/201311/16084

相关参考

知识大全 ASP.NET MVC 4框架揭秘:总体设计

ASP.NETMVC4框架揭秘:总体设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第章&n

知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[2]

ASP.NETMVC4框架揭秘:ControllerFactory[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[1]

ASP.NETMVC4框架揭秘:ControllerFactory[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 ASP.NET MVC 4框架揭秘:Controller(1)

ASP.NETMVC4框架揭秘:Controller(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET MVC 4框架揭秘:Controller(3)

ASP.NETMVC4框架揭秘:Controller(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET MVC 4框架揭秘:Controller(2)[2]

ASP.NETMVC4框架揭秘:Controller(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 ASP.NET MVC 4框架揭秘:Controller(2)[1]

ASP.NETMVC4框架揭秘:Controller(2)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 ASP.NET MVC 4框架揭秘:CBuilder(1)[1]

ASP.NETMVC4框架揭秘:CBuilder(1)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 ASP.NET MVC 4框架揭秘:CBuilder(1)[2]

ASP.NETMVC4框架揭秘:CBuilder(1)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 ASP.NET MVC 4框架揭秘:CBuilder(2)[2]

ASP.NETMVC4框架揭秘:CBuilder(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看