第1章 .NET和.NET框架概览 1
1.1 什么是.NET 1
1.2 什么是.NET框架 4
1.2.1 公共语言运行库的功能 5
1.2.2 .NET框架类库 6
1.2.3 客户端应用程序开发 7
1.2.4 服务器应用程序开发 8
1.3 小结 9
2.1 公共语言运行库概述 11
第2章 公共语言运行库 11
2.2 托管代码的创建 12
2.2.1 选择编译器 13
2.2.2 编译为MSIL 13
2.2.3 将MSIL编译为本机代码 13
2.2.4 执行代码 14
2.3 自动内存管理 15
2.3.1 分配内存 15
2.3.2 释放内存 15
2.3.3 生成结果和性能 16
2.4 跨语言互用性 17
2.4.1 概述 17
2.3.4 为非托管资源释放内存 17
2.4.2 公共语言规范简介 18
2.4.3 编写符合CLS的代码 21
2.5 元数据 23
2.5.1 元数据的优点 24
2.5.2 元数据和PE文件结构 25
2.5.3 元数据在运行时的作用 26
2.6 小结 28
第3章 通用类型系统 29
3.1 通用类型系统概述 29
3.1.1 类型的类别 29
3.1.4 类型和命名空间 31
3.1.2 值和对象 31
3.1.3 类型和程序集 31
3.2 类型成员 32
3.2.1 成员特征 32
3.2.2 重载 33
3.2.3 继承、重写和隐藏成员 33
3.3 值类型 36
3.3.1 内置值类型 36
3.3.2 用户定义的值类型 36
3.4 枚举类型 40
3.5.1 类 44
3.5 引用类型 44
3.5.2 接口 45
3.5.3 委托 45
3.5.4 指针 45
3.5.5 数组 46
3.6 类型转化 46
3.6.1 概述 47
3.6.2 类型转换表 47
3.7 格式化类型 51
3.7.1 格式化概述 52
3.7.2 格式说明符和格式提供程序 53
3.7.3 复合格式化 69
3.8 字符串转化为基类型 72
3.8.1 分析数值字符串 72
3.8.2 分析日期和时间字符串 74
3.8.3 分析其他字符申 76
3.9 小结 78
第4章 .NET框架类库 79
4.1 框架类库概述 79
4.1.1 基本功能 79
4.1.2 命名约定 79
4.1.3 类库和程序集 80
4.2 命名空间 81
4.2.1 完全限定名 82
4.2.2 命名空间级语句 82
4.2.3 NET系统命名空间 83
4.3 使用类库 85
4.4 小结 88
第5章 .NET框架编程规范 89
5.1 命名指南 89
5.1.1 大写样式 89
5.1.2 区分大小写 90
5.1.4 用词 91
5.1.3 缩写 91
5.1.5 避免类型名称混淆 92
5.1.6 命名空间命名规范 94
5.1.7 类命名规范 95
5.1.8 接口命名规范 95
5.1.9 属性命名规范 96
5.1.10 枚举类型命名规范 96
5.1.11 静态字段命名规范 97
5.1.12 参数命名规范 97
5.1.13 方法命名规范 97
5.1.14 属性命名规范 98
5.1.15 事件命名规范 100
5.2 类型使用规范 101
5.2.1 值类型使用规范 101
5.2.2 委托使用规范 106
5.2.3 特性使用规范 106
5.2.4 基类使用规范 108
5.3 类成员使用规范 112
5.3.1 造函数使用规范 112
5.3.2 方法使用规范 114
5.3.3 属性使用规范 119
5.3.4 事件使用规范 130
5.3.5 字段使用规范 134
5.3.6 参数使用规范 138
5.4 小结 140
第6章 初识程序集 141
6.1 程序集概述 141
6.1.1 基本功能 141
6.1.2 创建程序集 142
6.1.3 程序集的优点 142
6.1.4 程序集内容 143
6.1.5 程序集清单 144
6.2 用Ildasm查看程序集内容 145
6.3 创建程序集 153
6.3.1 命令行调用编译器 153
6.3.2 漫步命令行编译器创建程序集 158
6.3.3 用程序集链接器(Al.exe)创建程序集 163
6.4 使用程序集 168
6.4.1 通过引用使用程序集 168
6.4.2 动态加载程序集 174
6.4.3 部分引用 177
6.5 小结 182
7.1.1 程序集绑定请求解析过程 183
7.1 概述 183
第7章 版本控制 183
7.1.2 版本信息 184
7.1.3 区域性 185
7.1.4 强名称及强名程序集 186
7.2 强名程序集 187
7.2.1 强名方案 187
7.2.2 创建强名程序集 188
7.2.3 延迟签名 192
7.2.4 引用强名程序集 194
7.3 程序集定位过程 199
7.3.4 第4步:通过代码基或探测定位程序集 204
7.3.2 第2步:检查以前引用的程序集 204
7.3.3 第3步:检查全局程序集缓存 204
7.4 .NET框架配置工具配置版本策略 206
7.4.1 将程序集加载到全局缓冲区 208
7.4.2 从全局程序集缓存中删除程序集 210
7.4.3 在机器范围内配置程序集的版本策略 210
7.4.4 设置强名程序集的全局版本策略 213
7.4.5 删除组件的全局版本策略 215
7.4.6 定制应用程序的版本策略 216
7.5 使用发行者策略控制组件版本 220
7.6.1 实例1:透明引用程序集 221
7.6 版本控制实践 221
7.6.2 实例2:同一应用程序中使用多个版本的DLL 226
7.6.3 实例3:使用私有路径 228
7.6.4 实例4:用配置文件控制程序集版本 230
7.7 小结 231
第8章 程序集高级技术 233
8.1 反射 233
8.1.1 反射的用途 233
8.1.2 运行时查看类型信息 234
8.1.3 动态调用 243
8.2.1 使用动态创建程序集的几种情形 248
8.2 动态创建程序集 248
8.2.2 动态创建 249
8.3 小结 262
第9章 动态产生和编译源代码 263
9.1 代码文档对象模型简介 263
9.2 利用CodeDOM类型动态产生源代码 267
9.2.1 获得代码生成器 267
9.2.2 创建命名空间 268
9.2.3 创建注释 269
9.2.4 引入命名空间 270
9.2.5 在命名空间下定义类型 271
9.2.6 添加类型成员 273
9.2.7 编写语句和表达式 277
9.2.8 利用代码生成器生成代码 301
9.2.9 动态产生源代码实例 303
9.3 动态编译 313
9.3.1 获得编译器对象 313
9.3.2 构造编译单元 315
9.3.3 设置编译选项 316
9.3.4 编译 317
9.4.2 步骤2:引入相应的名字空间 319
9.4.3 步骤3:声明代理,添加代理变量 319
9.4.1 步骤1:设计界面 319
9.4.4 步骤4:动态产生代码 320
9.4.5 步骤5:显示测试结果 321
9.5 小结 322
第10章 创建和使用资源 323
10.1 什么是资源 323
10.2 资源的形式 324
10.2.1 resource文件 324
10.2.2 资源程序集 326
10.3 资源的定位 326
10.3.2 定位资源程序集 327
10.3.1 定位resources文件 327
10.4 创建资源 328
10.4.1 手工创建资源 328
10.4.2 程序创建资源 331
10.4.3 示例 333
10.5 使用资源 335
10.5.1 通过资源管理器使用资源 335
10.5.2 使用ResourceReader读取资源 344
10.5.3 自定义资源读取器 346
10.5.4 自定义资源管理器 348
10.5.5 在Asp.NET中使用资源 350
10.6 共享资源 366
10.7 小结 369
第11章 特性编程 371
11.1 特性概述 371
11.2 应用特性 371
11.3 编写自定义特性 373
11.3.1 应用Attribute Usage—Attribute 373
11.3.2 声明特性类 377
11.3.3 声明构造函数 377
11.3.4 声明属性 378
11.3.5 自定义特性示例 379
11.4 检索存储在特性中的信息 381
11.4.1 检索特性的一个实例 381
11.4.2 检索应用到同一范围的特性的多个实例 382
11.4.3 检索应用到不同范围的特性的多个实例 384
11.5 小结 387
第12章 序列化对象 389
12.1 概述 389
12.2 让类支持序列化 390
12.2.1 简单序列化 390
12.2.2 通过实现ISerializable接口定制序列化 395
12.3 获得流 401
12.4 格式器 403
12.4.1 IFormatter接口 403
12.4.2 使用格式器 405
12.4.3 自定义格式器 412
12.5 实例 425
12.6 小结 435
第13章 应用域 437
13.1 基本概念 437
13.1.1 应用域和进程的关系 437
13.1.4 应用域和对象的关系 438
13.1.3 应用域和程序集的关系 438
13.1.2 应用域和线程的关系 438
13.2 AppDomain类 439
13.2.1 静态方法和静态属性 440
13.2.2 主要的实例属性 441
13.2.3 主要的实例方法 443
13.2.4 公共事件 451
13.3 操作应用域 453
13.3.1 获得当前应用域 453
13.3.2 创建应用域 454
13.3.3 卸载应用域 459
13.3.4 操作应用域属性 461
13.3.5 在应用域中创建对象 464
13.3.6 在应用域中加载程序集 479
13.3.7 在应用域中执行程序 480
13.3.8 跨应用域回调 482
13.3.9 处理应用域事件 484
13.4 应用域局部存储 496
13.4.1 示例一 一个线程中操作多个应用域的局部存储 498
13.4.2 示例二 多个线程中操作一个应用域的局部存储 507
13.5 小结 510
14.1 线程的基本概念 511
第14章 多线程编程 511
14.2 Thread类 514
14.2.1 公共静态属性 514
14.2.2 公共静态方法 514
14.2.3 构造函数 517
14.2.4 公共实例属性 517
14.2.5 公共实例方法 519
14.3 操作线程 522
14.3.1 操作实例 522
14.3.2 结束线程 528
14.4 操作线程池 539
14.5.1 互斥 550
14.5 互斥和同步 550
14.5.2 同步 569
14.6 处理周期事件 580
14.6.1 System.WinForms Timer 580
14.6.2 ThrealdPool 585
14.6.3 System.Threading.Timer 591
14.6.4 System.Timers.Timer 598
14.7 线程局部存储(TLS) 605
14.8 线程静态成员 620
14.9 线程调用上下文 630
14.10 小结 643
第15章 异步调用 645
15.2 实现异步调用 653
15.2.1 声明委托类型 653
15.2.2 实例化调用委托 656
15.2.3 启动异步调用 658
15.2.4 获得结果 659
15.3 异步调用中的互斥处理 670
15.3.1 使用关键字lock/SyncLock 670
15.3.2 使用Monitor 672
15.4 小结 675
16.1 基本概念 677
第16章 自动垃圾收集 677
16.2 对象的Finalize方法 679
16.3 垃圾收集线程 683
16.4 垃圾收集器 687
16.5 Finalize队列 693
16.6 优化垃圾收集 696
16.6.1 定义GenObj类 696
16.6.2 为App类添加Generation—Demo方法 697
16.7 显式回收 700
16.7.1 添加DisposeObj类 700
16.7.2 为App类添加Dispose—Demo 703
16.8 重用对象 706
16.8.1 使用强引用 706
16.8.2 使用弱引用 713
16.9 小结 724
第17章 异常处理 725
17.1 异常处理概述 725
17.1.1 基本概念 725
17.1.2 运行库对异常的处理 726
17.1.3 筛选运行库异常 727
17.1.4 .NET中的异常 727
17.2 异常引发和捕获 729
17.1.5 Exception类 729
17.3 自定义异常 740
17.4 定制应用域的默认异常处理 742
17.5 跨语言的异常处理 745
17.6 跨应用域异常处理 755
17.7 有关异常处理的建议 759
17.8 小结 762
第18章 安全性 763
18.1 基础概念 763
18.1.1 权限 763
18.1.3 安全策略 764
18.1.2 类型安全和安全性 764
18.1.4 身份验证 765
18.1.5 授权 765
18.2 代码访问安全性 765
18.2.1 代码访问安全性介绍 766
18.2.2 编写安全类库 767
18.2.3 创建自己的代码访问权限 768
18.3 基于角色的安全性 775
18.3.1 基于角色的安全性介绍 775
18.3.2 Principal和Identity对象 776
18.3.4 与COM十1.0安全性相互操作 777
18.3.3 基于角色的安全检查 777
18.4 加密服务 778
18.4.1 加密概述 778
18.4.2 .NET框架加密模型 782
18.4.3 加密任务 782
18.4.4 创建加密方案 797
18.4.5 配置加密类 797
18.5 安全策略管理 800
18.5.1 安全策略模型 801
18.5.2 权限授予 804
18.5.4 管理安全策略 806
18.5.3 默认安全策略 806
18.5.5 Internet Explorer安全性和托管执行 820
18.6 小结 822
第19章 安全性工具 823
19.1 概述 823
19.2 证书创建工具(Makecert.exe) 824
19.3 证书管理器工具(Certmgr.exe) 828
19.4 发行者证书测试工具(Cert2spc.exe) 832
19.5 文件签名工具(SignCode.exe) 833
19.6 证书验证工具(Chktrust.exe) 839
19.7 权限查看工具(Permview:exe) 840
19.8 Secutil工具 842
19.9 小结 844