PreApplicationStartMethod主要用于为程序集指定一个方法,在程序集加载时进行一些自定义的初始化处理。

使用方式如下所示,首先在程序集中定义一个公共类型和一个公共静态的方法

然后我们使用PreApplicationStartMethod属性注册该方法进行程序集的预处理,注意PreApplicationStartMethod只能注册当前程序集中的类型中的方法进行预处理,而且该类型必须为public,改方法必须为public static。

接着我们按照上述步骤新建多个相同的项目

最后我们新建一个空的MVC项目,引用这些类库项目,对程序集进行测试

运行程序,可以看到Class1、Class2、Class3中的Run方法依次执行

Global文件中的事件,如Application_Start,会在他们执行完之后执行

如上所示,当前Web项目引用了三个类库项目,那么他们各自的预处理代码的执行顺序有什么规律呢?

查看MSDN上PreApplicationStartMethodAttribute类型的说明,可以看到我们无法控制代码的处理顺序,编译预处理代码出,必须保持代码的独立性,使预处理代码的执行顺序不会影响程序的运行。

另外,如果当前Web项目也存在预处理代码,那么,外部引用的程序集的预处理代码与Web项目中的预处理代码,那个会优先执行呢?

新建Class4如下所示,并注册Run方法进行预处理

运行站点,可以看到,Class4中的Run方法会在外部引用的程序集中的预处理程序执行完毕之后执行,Class4.Run执行完毕后才会执行Global文件中的相关事件代码。

因为预处理的代码会在程序第一次运行,加载程序集的时候执行。所以在MVC5与Katana项目中就是使用PreApplicationStartMethod特性进行HttpModule的动态注册的。

PreApplicationStartMethod特性说明的更多相关文章

  1. Fis3的前端工程化之路[三大特性篇之声明依赖]

    Fis3版本:v3.4.22 Fis3的三大特性 资源定位:获取任何开发中所使用资源的线上路径 内容嵌入:把一个文件的内容(文本)或者base64编码(图片)嵌入到另一个文件中 依赖声明:在一个文本文 ...

  2. Fis3的前端工程化之路[三大特性篇之资源定位]

    Fis3版本:v3.4.22 Fis3的三大特性 资源定位:获取任何开发中所使用资源的线上路径 内容嵌入:把一个文件的内容(文本)或者base64编码(图片)嵌入到另一个文件中 依赖声明:在一个文本文 ...

  3. Fis3的前端工程化之路[三大特性篇之内容嵌入]

    Fis3版本:v3.4.22 Fis3的三大特性 资源定位:获取任何开发中所使用资源的线上路径 内容嵌入:把一个文件的内容(文本)或者base64编码(图片)嵌入到另一个文件中 依赖声明:在一个文本文 ...

  4. .NET 4.6.2正式发布带来众多特性

    虽然大多数人的注意力都集中在.NET Core上,但与原来的.NET Framework相关的工作还在继续..NET Framework 4.6.2正式版已于近日发布,其重点是安全和WinForms/ ...

  5. SQL Server 2014 新特性——内存数据库

    SQL Server 2014 新特性——内存数据库 目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 ...

  6. 探索ASP.NET MVC5系列之~~~4.模型篇---包含模型常用特性和过度提交防御

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  7. InnoDB关键特性学习笔记

    插入缓存 Insert Buffer Insert Buffer是InnoDB存储引擎关键特性中最令人激动与兴奋的一个功能.不过这个名字可能会让人认为插入缓冲是缓冲池中的一个组成部分.其实不然,Inn ...

  8. ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...

  9. HTML5新特性有哪些,你都知道吗

    一.画布(Canvas) 画布是网页中的一块区域,可所以用JavaScript在上面绘图.下面我们来创建一个画布并在上面绘制一个坦克(后面将用HTML5做一个坦克大战游戏),代码如下: <!DO ...

随机推荐

  1. Java数组和各种List的性能比较

    以下程序分别对Java数组.ArrayList.LinkedList和Vector进行随机访问和迭代等操作,并比较这种集合的性能. package cn.lion.test; public class ...

  2. java的finally简单理解

    1. 大家都知道, 普通的try, catch, finally格式: try{ //有可能会抛出异常的代码 }catch{ //抛出异常时处理的代码 }finally{ //无条件执行的代码,就不管 ...

  3. 安装mysql解压 版

    记录:win10重装系统后,注册mysql服务 其实在重装系统时如果不格式化mysql所在的盘,我们的mysql是不需要重装的 操作: 1.创建mysql服务:   开始-->运行-->c ...

  4. 分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境(服务器端及客户端)(转)

    近期想改公司内部的源码管控从TFS为git,发现yubinfeng大侠有关git的超详细大作,现将其转载并记录下,以防忘记,其原博客中有更加详细的git及.net开发相关内容.原文地址:http:// ...

  5. ubuntu 10.10 更新源

    deb http://mirrors.163.com/ubuntu/ maverick main universe restricted multiverse deb-src http://mirro ...

  6. 【原】Ajax技术原理

    主要内容: Ajax原理 Ajax核心技术 Ajax是Asynchronous JavaScript and XML的简称,意思是异步的JavaScript和XML. 主要包括技术: web标准的XH ...

  7. 使用SQL语句创建数据库1

    创建一个数据文件和一个日志文件的数据库 user master --只想当前使用的数据库 GO --批处理标志 create database BOOK --创建book数据库 on primary ...

  8. 在 Azure Web 应用中创建 .NET 应用程序

    本快速入门帮助你在数分钟内将你的第一个 ASP.NET Web 应用部署到 Azure 应用服务.完成本教程后,你将能够在云中启动并运行一个简单的 Web 应用.在本教程中完成的所有操作均符合1 元试 ...

  9. 二:HTML基础

    一:html语言基础 1.基本结构 <html> <head> <!--元信息:提供额外信息:关键字.作者信息.页面更新时间.设置字符编码--> <meta ...

  10. unity3d之游戏优化

    =============================================================================== 美术规格: 1.单个蒙皮网格渲染器2.一 ...