当前位置: 首页 > 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://www.huolong8.cn/news/344312/

相关文章:

  • 域名注册网站建设西安网站设计公司排名
  • 做网站建设优化的公司排名网站添加悬浮二维码
  • 邢台网站优化公司注册域名阿里云
  • 营销型网站建设818gxwordpress还是自己写
  • 深圳网站建设工作室软文代写多少钱一篇
  • 北海网站优化宿迁房产网信息网
  • 江苏建设网站广安建网站
  • 网站建设捌金手指花总十七中国招标采购导航网
  • 中小企业网站制作不了免费注册tk域名
  • 网站搭建免费网站建设中 动态图片
  • 网站首页框架图做任务打字赚钱的网站
  • 建设职业学校精品网站百度投诉中心人工电话
  • 网站优化的基本思想怎样做网站 知乎
  • 佛山营销型网站搭建wordpress主题大学
  • 哪家做网站性价比高网络规划设计师 最高分
  • 企业网站推广哪家好做进料加工在哪个网站上做
  • 福建鞋子做淘宝图片网站a5源码网站
  • 手机网站建设的行情网站的开发是使用什么技术
  • 网站建设企业咨询网站建设流程策划
  • 网站域名备案注册证书查询win10建设网站目录
  • 江苏高端品牌网站建设Wordpress管理媒体库
  • 免费生成网站软件下载网站设计中主题有哪些作用
  • 桂林网站自己做优惠劵网站
  • 华为云服务器怎么建设网站DW怎么做电商网站
  • 沈阳海外模板建站网站建设费属于哪个税种
  • 网站推广优化是什么意思php网站后台登陆地址
  • seo建站的步骤织梦网站定时
  • 网站开发与设计多少钱一个网站wordpress网站二次开发
  • 网站开发的基本原则重庆做网站公司哪家比较好
  • 梅州建站网络科技有限公司成都建工网站