//如果不允许采用后备命名空间返回Null
if (!useNamespaceFallback)
{
return null;
}
//通过当前ControllerBuilder的默认命名空间进行匹配
contrllerType = thisGetControllerType(
ControllerBuilderCurrentDefaultNamespaces types)
if (null != contrllerType)
{
return contrllerType;
}
//如果只存在一个类型名称匹配的Controller则返回之
if (typesLength == )
{
return types[];
}
//如果具有多个类型名称匹配的Controller则抛出异常
throw new InvalidOperationException(具有多个匹配的Controller类型)
}
}
如果RouteData的DataTokens中不存在这样一个UseNamespaceFallback路由变量或者它的值为True则先采用当前ControllerBuilder的默认命名空间列表进一步对Controller类型进行解析如果存在唯一的类型则直接当作目标Controller类型返回如果通过两组命名空间均不能得到一个匹配的ControllerType并且只存在唯一一个与传入的Controller名称相匹配的类型则直接将该类型作为目标Controller返回如果这样的类型具有多个则直接抛出InvalidOperationException异常
返回目录ASPNET MVC 框架揭秘
编辑推荐
ASP NET开发培训视频教程
Microsoft NET框架程序设计视频教程
Java程序性能优化让你的Java程序更快更稳定
Visual C++音频/视频技术开发与实战
[] []