当前位置: 首页 > news >正文

高仿卡地亚手表网站手机网站技术方案

高仿卡地亚手表网站,手机网站技术方案,百度seo优化系统,wordpress企业网站模板下载AreaRegistration.RegisterAllAreas() 我们新建一个名称为Admin的Area#xff0c;VS生成下面的代码。 { action , id 我们先来看AreaRegistration这个抽象类#xff0c;实际上#xff0c;它只有一个核心功能#xff0c;就是RegisterAllAreas#xff0c;获取所有继承它的…AreaRegistration.RegisterAllAreas()  我们新建一个名称为Admin的AreaVS生成下面的代码。        { action  , id  我们先来看AreaRegistration这个抽象类实际上它只有一个核心功能就是RegisterAllAreas获取所有继承它的子类类型然后创建它在为他创建一个AreaRegistrationContext在调用它的RegisterArea方法。      TypeCacheName     AreaName {    RegisterAllAreas(RouteCollection routes, IBuildManager buildManager, Type areaRegistrationTypes  (Type areaRegistrationType   CreateContextAndRegister(RouteCollection routes,   thisNamespace  (thisNamespace !  为什么要有AreaRegistrationContext这个类型呢假如没有它AreaRegistration子类创建完成时就可以直接注册了我们的AdminAreaRegistration的RegisterArea方法完全可以通过RouteCollection再重载一个MapRoute方法用于Area路由的注册。像下面这个样子。    { action  , id   这样不是很好么跟随着源码详细瞧一瞧这个AreaRegistrationContext AreaRegistrationContext  这个类本质上只有一个属性那就是命名空间。    HashSet _namespaces   HashSet AreaRegistrationContext( areaName, RouteCollection routes,   AreaName { ;   ICollection {  RouteCollection Routes { ;    State { ;   Route MapRoute( name,  url,  defaults,  constraints,  我们回到核心的RegisterAllAreas方法中。   (AreaRegistration).IsAssignableFrom(type) !    RegisterAllAreas(RouteCollection routes, IBuildManager buildManager, Type areaRegistrationTypes  (Type areaRegistrationType  通过TypeCacheUtil.GetFilteredTypesFromAssemblies获取出来的类型必须符合IsAreaRegistrationType委托(AreaRegistration).IsAssignableFrom(type)不难理解必须是AreaRegistration的子类那type.GetConstructor(Type.EmptyTypes)呢其实一开始我也不明白它是什么意思后来通过Console写了个小程序测试了下。   Main(  tac   tbc   tcc   (tac !   (tbc !   (tcc ! View Code  输出 类TA :False 类TB :False 类TC :True 请按任意键继续. . . 我们可以明白了也就是我们的AdminAreaRegistration不能有构造器Visual Studio生成的确实没有构造器。但是这里为什么要这样约定呢确实想不通我们先继续回到刚刚的TypeCacheUtil.GetFilteredTypesFromAssemblies方法。首先会尝试从缓存中获取类型与往常不同的是这里缓存的格式是xml文件缓存的原因应该很容易理解频繁反射会造成性能的影响改良反射的方式有多种这里我们学到了一种缓存。关于TypeCacheSerializer如何工作和ReadTypesFromCache具体是如何实现的这里就不去看了主要就是一些关于Stream和XmlDocument这两个类的操作。但是有必要提一下IBuildManager这个接口。在MVC中的实现者是BuildManagerWrapper内部实际使用的是BuildManager位于System.Web.Compilation关于它的详细资料少之又少只知道主要负责站点的动态编译和程序集的管理。我们知道可以通过AppDomain来获取应用程序相关的程序集但这里为什么用BuilderManager呢想必必有什么不同   IEnumerableType FilterTypesInAssemblies(IBuildManager buildManager, PredicateTypeIEnumerableType typesSoFar  (Assembly assembly  typesSoFar.Where(type  TypeIsPublicClass(type)  我们看到这里用它获取所有的应用程序集。在foreach前打一个断点。借助即时窗口我们可以和AppDomain获取的程序集进行一个比较。 string[] Arr1  assemblies.Cast().Select(aa.FullName).ToArray(); 已计算表达式表达式没有值 string[] Arr2  AppDomain.CurrentDomain.GetAssemblies().Select(aa.FullName).ToArray(); 已计算表达式表达式没有值 Arr1.Length 36 Arr2.Length 42 string[] Arr3  Arr2.Except(Arr1).ToArray(); 已计算表达式表达式没有值 Arr3 {string[6]}     [0]: System.Runtime.Caching, Version4.0.0.0, Cultureneutral, PublicKeyTokenb03f5f7f11d50a3a     [1]: Microsoft.Build.Utilities.v4.0, Version4.0.0.0, Cultureneutral, PublicKeyTokenb03f5f7f11d50a3a     [2]: Microsoft.JScript, Version10.0.0.0, Cultureneutral, PublicKeyTokenb03f5f7f11d50a3a     [3]: Microsoft.VisualStudio.Web.PageInspector.Runtime, Version15.0.0.0, Cultureneutral, PublicKeyTokenb03f5f7f11d50a3a     [4]: Microsoft.VisualStudio.Web.PageInspector.Tracing, Version15.0.0.0, Cultureneutral, PublicKeyTokenb03f5f7f11d50a3a     [5]: Microsoft.VisualStudio.Debugger.Runtime, Version15.0.0.0, Cultureneutral, PublicKeyTokenb03f5f7f11d50a3a 这里列出的几个命名空间我也不熟悉但是大致可以了解使用AppDomain返回的程序集是当前AppDomain下所有程序中显示使用过的类型所在的程序集如果你对AppDomain有了解希望不要被我误解而BuildManager返回的是和程序运行环境甚至配置调试相关的程序集我们可以这么理解BuildManager提供更强大的功能可以负责站点的动态编译和程序集的管理。关于AreaRegistration类型的缓存我们基本已经了解拿到所有的AreaRegistration类型后我们针对每一个进行一次路由配置工作。    RegisterAllAreas(RouteCollection routes, IBuildManager buildManager, Type areaRegistrationTypes  (Type areaRegistrationType  具体的   CreateContextAndRegister(RouteCollection routes,   thisNamespace  (thisNamespace !  我们来思考一下这个thisNamespace会是什么值呢由于这里的GetType目标是AdminAreaRegistration在我这里所以是Mvc_Web.Areas.Admin然后会被添加到这里的AreaRegistrationContext的Namespace属性中然后调用子类重写的RegisterArea方法最终添加到RouteCollection中我们看最后调用的MapRoute方法。  Route MapRoute( name,  url,  defaults,  constraints,  (namespaces    Namespaces !  useNamespaceFallback  (namespaces   || namespaces.Length   最重要的是倒数第二行和倒数第三行他和控制器的匹配有关其实根据UseNamespaceFallback这个也很容易理解如果我们的AdminAreaRegistration没有命名空间那就允许它退回到其他地方找。 原文来自技术之家转载于:https://www.cnblogs.com/buntinginfo/p/7103515.html
http://wiki.neutronadmin.com/news/344312/

相关文章:

  • 外贸网站平台哪个好wordpress怎么做下载页
  • 建设门户网站特点批量注册域名
  • 成都网站建设制作做网站要注册公司吗
  • 做网站怎么做小图标wordpress算数验证码
  • 网站开发的背景与环境服装网站建设策划书 百度文库
  • 重庆建企业网站17网站一起做网店怎么拿货
  • 哪个网站推广好wordpress列表无图像
  • 简述网站规划的一般步骤营销型网站的推广
  • asp net做网站视频长沙建一个网站多少钱
  • 云南做企业网站多少钱返利 wordpress
  • wordpress建站事例昨天的新闻
  • ps免费素材网站有哪些职业生涯规划ppt免费模板
  • 中山专业网站制作网站建设课程ppt
  • 网站流量超限什么意思注册人力资源公司需要什么条件
  • 恶意网站是怎么实现的wordpress卡车主题
  • 网站建设经验交流材料医院建设官方网站必要性
  • 延安网站设计公司医疗器械股票龙头股票
  • 网站副标题网页微博怎么用qq登录
  • 城市建设网站海诚网站建设
  • 如何学会建网站中国最顶尖的服装设计公司
  • 那些做seo的网站丹阳论坛
  • 建设政务网站律师个人网站建设
  • 做网站和做产品同ip多域名做网站
  • 信息图表设计网站公司页面设计代码
  • 平面设计鉴赏网站网络推广公司简介
  • 网站内容怎么修改天津做网站外包公司有哪些
  • 网站宣传策划方案营销型网站建设题库
  • 厦门 网站 开发如何装wordpress
  • 网站内链怎么优化html个人主页网页设计代码
  • 建设一个个人网站不需要网站建设设计公司