熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET MVC 4框架揭秘:Controller類型(2)[1]

2013-11-13 12:31:32  來源: .NET編程 

    Controller類型的解析(

  在如下所示的用於解析Controller類型的GetControllerType方法中從預先得到的所有Controller類型列表中篩選出類型名稱與傳入的Controller名稱相匹配的類型首先通過路由對象的命名空間對之前得到的類型列表進行進一步篩選如果能夠找到一個唯一的類型則直接將其作為Controller的類型返回為了確定是否采用後備命名空間對Controller類型進行解析可以從作為參數的RouteData對象中得到其DataTokens屬性並從中獲取路由變量UseNamespaceFallback的值如果該路由變量存在並且值為False則直接返回Null

  public class ReflectedControllerFactory : IControllerFactory

  {

  //其他成員

  protected virtual Type GetControllerType (RouteData routeData

  string controllerName)

  {

  //根據類型名稱篩選

  var types = controllerTypesWhere(type => stringCompare(

  controllerName + Controller typeName true) == ToArray()

  if (typesLength ==

  {

  return null;

  }

  //通過路由對象的命名空間進行匹配

  var namespaces = routeDataDataTokens[Namespaces] as

  IEnumerable<string>;

  namespacesnamespaces = namespaces ?? new string[];

  Type contrllerType = thisGetControllerType(namespaces types)

  if (null != contrllerType)

  {

  return contrllerType;

  }

  //是否允許采用後備命名空間

  bool useNamespaceFallback = true;

  if (null != routeDataDataTokens[UseNamespaceFallback])

  {

  useNamespaceFallback =

  (bool)(routeDataDataTokens[UseNamespaceFallback])

  }

[]  []  


From:http://tw.wingwit.com/Article/program/net/201311/16083.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.