书籍详情
C#技术揭秘
作者:(美)Tom Archer,(美)Andrew Whitechapel著;马朝晖等译;马朝晖译
出版社:机械工业出版社
出版时间:2003-07-01
ISBN:9787111122579
定价:¥69.00
购买这本书可以去
内容简介
本书详细介绍了C#的特点、新增功能以及它与C和C++的异同,是一本真正揭示C#技术内幕的书籍。本书既适合C#的初学者阅读,也适合已经使用过C#语言进行编程并希望掌握高级功能的开发人员参考。本书在前一版基础上进行了全面更新,是全球公认的最佳C#图书。全书从C#语言基础,讲到代码的编写,最后深入讨论C#语言的内部架构。其间通过大量实用的代码示例和应用演示程序循序渐进地教你如何使用C#。让你知其然,更知其所以然。
作者简介
TomArcher,他是深受世界程序员爱戴的技术专家。拥有18年的开发经验,曾供职于IBM、AT&T等公司,编写过在业界占领先地位的垂直市场软件和获奖的盒装应用程序。他曾是著名技术网站CodeGuru的负责人,目前仍然通过各种形式支持着开发社区。
目录
译者序
序一
序二
前言
第一部分 C#类的基本原理
第1章 建立C#应用程序和库
1.1 “Hello,World”--命令行版本
1.2 “Hello,World”的代码解释
1.2.1 一站式编程
1.2.2 名称空间
1.2.3 类和成员
1.2.4 Main方法
1.2.5 System.Console.WriteLine方法
1.2.6 名称空间和using指令
1.2.7 框架代码
1.2.8 类的二义性
1.3 “Hello,World”--Visual Studio.NET版本
1.4 编译和运行.NET应用程序
1.5 “Hello,World”内部
1.6 配件和模块
1.6.1 配件概述
1.6.2 配件的好处
1.6.3 构建配件
1.6.4 创建共享配件
1.6.5 使用全局配件缓存
1.7 小结
第2章 .NET类型系统
2.1 所有东西都是对象
2.2 值类型和引用类型
2.2.1 值类型
2.2.2 引用类型
2.3 装箱和拆箱
2.3.1 将值类型转换为引用类型
2.3.2 将引用类型转换为值类型
2.3.3 更多的装箱例子
2.4 类型和别名
2.5 类型之间的转换
2.6 CTS的好处
2.6.1 语言互操作性
2.6.2 单根的对象层次结构
2.6.3 类型安全
2.7 小结
第3章 类和结构
3.1 定义类
3.2 类成员
3.3 访问修饰符
3.4 Main方法
3.4.1 命令行参数
3.4.2 从Main方法返回值
3.4.3 多个Main方法
3.5 构造器
3.5.1 静态成员和实例成员
3.5.2 构造器初始化器
3.5.3 在构造器初始化器中指定运行时信息
3.6 常量与只读字段
3.6.1 常量
3.6.2 只读字段
3.7 继承
3.7.1 多个接口
3.7.2 封闭的类
3.8 在C#中定义结构
3.8.1 结构的使用
3.8.2 使用结构的原则
3.9 小结
第4章 方法
4.1 值和引用参数
4.1.1 ref方法参数
4.1.2 ont方法参数
4.2 再论值和引用参数
4.3 方法重载
4.3.1 重载构造器
4.3.2 继承与重载
4.4 可变的方法参数
4.5 虚拟方法
4.5.1 方法重定义
4.5.2 多态性
4.5.3 new和虚拟方法
4.5.4 从构造器调用虚拟方法
4.6 静态方法
4.6.1 访问类成员
4.6.2 静态构造器
4.7 小结
第5章 特性、数组和索引器
5.1 特性是灵巧字段
5.1.1 定义和使用特性
5.1.2 特性的内幕
5.1.3 继承特性
5.1.4 特性的高级用途
5.2 数组
5.2.1 声明数组
5.2.2 一维数组示例
5.2.3 多维数组
5.2.4 查询秩
5.2.5 锯齿形数组
5.3 使用索引器像对待数组那样对待对象
5.3.1 定义索引器
5.3.2 索引器例子
5.3.3 索引器的内幕
5.3.4 设计原则
5.4 小结
第6章 属性
6.1 属性简介
6.2 定义属性
6.3 查询属性
6.3.1 类属性
6.3.2 方法属性
6.3.3 字段属性
6.4 属性参数
6.4.1 位置参数和命名参数
6.4.2 使用命名过的参数时的常见错误
6.4.3 有效的属性参数类型
6.5 AttributeUsage属性
6.5.1 定义属性目标
6.5.2 单次使用和多次使用的属性
6.5.3 指定属性继承规则
6.6 属性标识符
6.7 预定义的属性
6.7.1 Conditional属性
6.7.2 Obsolete属性
6.7.3 CLSCompliant属性
6.7.4 DllImport和StructLayout属性
6.7.5 配件属性
6.8 上下文属性
6.9 小结
第7章 接口
7.1 接口的用途
7.2 声明接口
7.3 实现接口
7.3.1 使用is查询实现
7.3.2 使用as查询实现
7.3.3 接口与替代技术
7.4 显式地限定接口成员名
7.4.1 用接口进行名称隐藏
7.4.2 避免名称的二义性
7.5 接口与继承
7.6 组合接口
7.7 小结
第二部分 编写代码
第8章 表达式和操作符
8.1 操作符的定义
8.2 操作符的优先级
8.2.1 C#如何决定优先级
8.2.2 左结合性和右结合性
8.2.3 实际使用
8.3 C#操作符
8.3.1 基本表达式操作符
8.3.2 算术操作符
8.4 数值转换
8.5 位操作符
8.6 关系操作符
8.7 简单赋值操作符
8.8 条件操作符
8.9 小结
第9章 程序流控制
9.1 选择语句
9.1.1 if语句
9.1.2 switch语句
9.2 迭代语句
9.2.1 while语句
9.2.2 do/while语句
9.2.3 for语句
9.2.4 foreach语句
9.3 使用跳转语句进行分支
9.3.1 break语句
9.3.2 continue语句
9.3.3 声名狼藉的goto语句
9.3.4 return语句
9.4 小结
第10章 字符串处理和正则表达式
10.1 字符串
10.1.1 字符串的格式化
10.1.2 格式指定符
10.1.3 对象和ToString
10.1.4 数字字符串分析
10.1.5 字符串和DateTime
10.1.6 字符串的编码方式
10.1.7 StringBuilder类
10.1.8 分解字符串
10.1.9 扩展字符串
10.1.10 字符串扣留
10.2 正则表达式
10.2.1 Match和MatchCollection
10.2.2 组和捕获
10.2.3 字符串-修改表达式
10.2.4 正则表达式选项
10.2.5 编译正则表达式
10.3 小结
第11章 用流进行文件I/O
11.1 流类
11.1.1 FileStream
11.1.2 StreamReader和StreamWriter
11.1.3 内存和缓冲流
11.1.4 字符串读取器和写出器
11.1.5 二进制读取器和写出器
11.2 文件系统类
11.2.1 Directory和DirectoryInfo
11.2.2 File和FileInfo
11.2.3 分析路径
11.3 流的非控制台使用方式
11.3.1 Windows OpenFileDialog
11.3.2 读取Web页面
11.4 串行化
11.4.1 使用BinaryFormatter进行串行化
11.4.2 使用SoapFormatter
11.4.3 使用XmlSerializer进行串行化
11.4.4 实现ISerializable
11.5 小结
第12章 用异常进行错误处理
12.1 异常处理概述
12.2 基本的异常处理语法
12.2.1 抛出异常
12.2.2 捕获异常
12.2.3 重新抛出一个异常
12.2.4 使用finally进行清理
12.3 重试代码
12.4 错误处理技术的比较
12.4.1 异常处理相对于返回编码的好处
12.4.2 在正确的上下文中处理错误
12.4.3 提高代码的可读性
12.4.4 从构造器抛出异常
12.5 使用System.Exception类
12.5.1 构造一个Exception对象
12.5.2 使用StackTrace特性
12.5.3 捕获多个异常类型
12.5.4 派生自己的Exception类
12.6 用异常处理设计代码
12.6.1 try块的设计问题
12.6.2 catch块的设计问题
12.7 小结
第13章 操作符重载和用户定义的转换
13.1 操作符重载
13.1.1 操作符重载的语法
13.1.2 操作符重载的规则和限制
13.1.3 操作符重载示例
13.1.4 RGB颜色递增示例
13.1.5 操作符重载的设计方针
13.2 用户定义的转换
13.2.1 用户定义的转换语法
13.2.2 用户定义的转换的规则和限制
13.2.3 用户定义的转换示例
13.3 小结
第14章 委托和事件处理器
14.1 将委托作为回调方法使用
14.2 委托的内幕
14.3 将委托定义为静态成员
14.4 只在需要时创建委托
14.5 多点委托
14.6 使用多点委托定义事件
14.7 小结
第15章 使用XML进行文档记录
15.1 入门
15.1.1 添加元素
15.1.2 可以接受注释的代码构造
15.2 编译器产生的元素ID
15.2.1 字段、特性、事件和索引器
15.2.2 方法
15.3 良构的XML
15.4 注释网页
15.5 元素标记和属性
15.5.1 标记和cref属性
15.5.2 和标记
15.5.3 标记
15.5.4 标记
15.6 定制的格式化
15.7 XML与数据
15.8 小结
第三部分 高级C#
第16章 数值处理和Math类
16.1 C#和.NET中的数值支持
16.1.1 Decimal类型是原始的类型吗
16.1.2 数值后缀
16.1.3 数值类型的各种名称
16.1.4 数值字面值
16.2 整数范围和溢出规则
16.3 Decimal类型
16.4 System.Math类
16.4.1 System.Math常量
16.4.2 处理数值的正负号
16.4.3 最小值和最大值
16.4.4 用于取整和截短的方法
16.5 小结
第17章 集合和对象枚举
17.1 实现枚举接口
17.1.1 使用枚举器对象
17.1.2 使用foreach语句处理集合
17.2 为什么需要两个接口
17.3 构造枚举器对象
17.4 创建具有版本的枚举器
17.5 将IEnumerable和IEnumerator合并
17.6 在允许枚举时保护数据
17.7 值类型
17.7.1 性能问题
17.7.2 修改值类型的集合数据
17.8 小结
第18章 多线程和异步编程
18.1 线程入门
18.2 线程处理的基本知识
18.2.1 创建线程和Thread对象
18.2.2 管理线程的生存周期
18.2.3 销毁线程
18.2.4 对线程进行调度
18.3 与线程进行数据通信
18.4 线程安全和同步
18.4.1 使用Monitor类保护代码
18.4.2 通过C# lock语句使用监视锁
18.4.3 使用Mutex类对代码进行同步
18.5 使用委托调用异步方法
18.6 线程安全和.NET类
18.7 线程方针
18.7.1 何时应该使用线程
18.7.2 何时不应该使用线程
18.8 小结
第19章 利用反射查询元数据
19.1 Reflection API层次结构
19.2 Type类
19.3 获得Type引用
19.3.1 获取一个实例的类型
19.3.2 从名称获取类型
19.3.3 查询类型
19.4 处理配件和模块
19.4.1 遍历配件的类型
19.4.2 列出配件的模块
19.5 使用反射进行晚绑定
19.6 使用反射实现抽象工厂
19.7 动态地生成代码
19.8 小结
第20章 固定和内存管理
20.1 垃圾收集
20.2 重定义Finalize
20.3 强行进行垃圾收集
20.4 Dispose模式
20.5 IDisposable接口
20.5.1 派生的可处置类
20.5.2 防止重复处置
20.5.3 对Dispose的语言支持
20.6 垃圾收集器代
20.7 弱引用
20.8 不安全的代码
20.9 固定
20.9.1 固定数组元素
20.9.2 间接引用成员操作符
20.9.3 使用stackalloc
20.10 小结
第21章 从C#应用程序使用COM
21.1 COM在当今的.NET环境中处于什么位置
21.2 从C#使用COM组件
21.2.1 创建ATL组件
21.2.2 从.NET应用程序使用COM组件
21.2.3 绑定和使用COM组件
21.2.4 使用COM组件进行动态类型发现
21.2.5 对COM对象进行晚绑定
21.3 事件处理
21.3.1 COM连接点的工作原理
21.3.2 创建一个产生事件的ATL COM组件
21.3.3 使用委托进行事件处理
21.3.4 在.NET应用程序中接收非托管的COM事件
21.4 使用COM集合
21.4.1 使用ATL创建COM集合对象
21.4.2 在.NET应用程序中使用COM集合
21.4.3 遍历.NET集合中的元素
21.5 在托管代码中重用COM组件
21.5.1 包含
21.5.2 聚合
21.5.3 通过混合模式的继承进行重用
21.5.4 通过混合模式的包含进行重用
21.5.5 .NET对COM线程模型和场所的感知
21.6 将方法关键字映射到IDL属性
21.7 小结
第22章 在非托管代码中使用.NET组件
22.1 通过COM创建和使用.NET组件
22.1.1 从配件产生类型库和注册配件
22.1.2 从Visual Basic 6客户使用组件
22.1.3 COM interop的内部机理
22.1.4 探究产生的类型库
22.2 使用属性影响产生的类型库元数据
22.2.1 修改接口类型
22.2.2 修改GUID和ProgID
22.2.3 对COM隐藏公共类型
22.2.4 修改类型的编组行为
22.3 异常处理:.NET与COM
22.4 在非托管事件接收器中处理来自.NET组件的事件
22.4.1 创建产生事件的.NET组件
22.4.2 在Visual Basic客户应用程序中处理事件
22.5 .NET组件中的线程从属关系
22.6 小结
第23章 安全性
23.1 .NET安全性
23.2 可检验的类型安全
23.3 代码签名
23.3.1 私有配件
23.3.2 强名称配件
23.3.3 全局配件缓存
22.3.4 延迟签名配件
23.4 密码服务
23.5 代码访问安全性
23.5.1 证据
23.5.2 安全策略
23.5.3 配置安全
23.5.4 CASpol
23.5.5 强制式和声明式CAS
23.5.6 标识权限
23.5.7 配件权限请求
23.6 基于角色的安全
23.6.1 PrincipalPermission请求
23.6.2 模仿
23.7 隔离的存储
23.8 小结
附录A MSIL指令表
序一
序二
前言
第一部分 C#类的基本原理
第1章 建立C#应用程序和库
1.1 “Hello,World”--命令行版本
1.2 “Hello,World”的代码解释
1.2.1 一站式编程
1.2.2 名称空间
1.2.3 类和成员
1.2.4 Main方法
1.2.5 System.Console.WriteLine方法
1.2.6 名称空间和using指令
1.2.7 框架代码
1.2.8 类的二义性
1.3 “Hello,World”--Visual Studio.NET版本
1.4 编译和运行.NET应用程序
1.5 “Hello,World”内部
1.6 配件和模块
1.6.1 配件概述
1.6.2 配件的好处
1.6.3 构建配件
1.6.4 创建共享配件
1.6.5 使用全局配件缓存
1.7 小结
第2章 .NET类型系统
2.1 所有东西都是对象
2.2 值类型和引用类型
2.2.1 值类型
2.2.2 引用类型
2.3 装箱和拆箱
2.3.1 将值类型转换为引用类型
2.3.2 将引用类型转换为值类型
2.3.3 更多的装箱例子
2.4 类型和别名
2.5 类型之间的转换
2.6 CTS的好处
2.6.1 语言互操作性
2.6.2 单根的对象层次结构
2.6.3 类型安全
2.7 小结
第3章 类和结构
3.1 定义类
3.2 类成员
3.3 访问修饰符
3.4 Main方法
3.4.1 命令行参数
3.4.2 从Main方法返回值
3.4.3 多个Main方法
3.5 构造器
3.5.1 静态成员和实例成员
3.5.2 构造器初始化器
3.5.3 在构造器初始化器中指定运行时信息
3.6 常量与只读字段
3.6.1 常量
3.6.2 只读字段
3.7 继承
3.7.1 多个接口
3.7.2 封闭的类
3.8 在C#中定义结构
3.8.1 结构的使用
3.8.2 使用结构的原则
3.9 小结
第4章 方法
4.1 值和引用参数
4.1.1 ref方法参数
4.1.2 ont方法参数
4.2 再论值和引用参数
4.3 方法重载
4.3.1 重载构造器
4.3.2 继承与重载
4.4 可变的方法参数
4.5 虚拟方法
4.5.1 方法重定义
4.5.2 多态性
4.5.3 new和虚拟方法
4.5.4 从构造器调用虚拟方法
4.6 静态方法
4.6.1 访问类成员
4.6.2 静态构造器
4.7 小结
第5章 特性、数组和索引器
5.1 特性是灵巧字段
5.1.1 定义和使用特性
5.1.2 特性的内幕
5.1.3 继承特性
5.1.4 特性的高级用途
5.2 数组
5.2.1 声明数组
5.2.2 一维数组示例
5.2.3 多维数组
5.2.4 查询秩
5.2.5 锯齿形数组
5.3 使用索引器像对待数组那样对待对象
5.3.1 定义索引器
5.3.2 索引器例子
5.3.3 索引器的内幕
5.3.4 设计原则
5.4 小结
第6章 属性
6.1 属性简介
6.2 定义属性
6.3 查询属性
6.3.1 类属性
6.3.2 方法属性
6.3.3 字段属性
6.4 属性参数
6.4.1 位置参数和命名参数
6.4.2 使用命名过的参数时的常见错误
6.4.3 有效的属性参数类型
6.5 AttributeUsage属性
6.5.1 定义属性目标
6.5.2 单次使用和多次使用的属性
6.5.3 指定属性继承规则
6.6 属性标识符
6.7 预定义的属性
6.7.1 Conditional属性
6.7.2 Obsolete属性
6.7.3 CLSCompliant属性
6.7.4 DllImport和StructLayout属性
6.7.5 配件属性
6.8 上下文属性
6.9 小结
第7章 接口
7.1 接口的用途
7.2 声明接口
7.3 实现接口
7.3.1 使用is查询实现
7.3.2 使用as查询实现
7.3.3 接口与替代技术
7.4 显式地限定接口成员名
7.4.1 用接口进行名称隐藏
7.4.2 避免名称的二义性
7.5 接口与继承
7.6 组合接口
7.7 小结
第二部分 编写代码
第8章 表达式和操作符
8.1 操作符的定义
8.2 操作符的优先级
8.2.1 C#如何决定优先级
8.2.2 左结合性和右结合性
8.2.3 实际使用
8.3 C#操作符
8.3.1 基本表达式操作符
8.3.2 算术操作符
8.4 数值转换
8.5 位操作符
8.6 关系操作符
8.7 简单赋值操作符
8.8 条件操作符
8.9 小结
第9章 程序流控制
9.1 选择语句
9.1.1 if语句
9.1.2 switch语句
9.2 迭代语句
9.2.1 while语句
9.2.2 do/while语句
9.2.3 for语句
9.2.4 foreach语句
9.3 使用跳转语句进行分支
9.3.1 break语句
9.3.2 continue语句
9.3.3 声名狼藉的goto语句
9.3.4 return语句
9.4 小结
第10章 字符串处理和正则表达式
10.1 字符串
10.1.1 字符串的格式化
10.1.2 格式指定符
10.1.3 对象和ToString
10.1.4 数字字符串分析
10.1.5 字符串和DateTime
10.1.6 字符串的编码方式
10.1.7 StringBuilder类
10.1.8 分解字符串
10.1.9 扩展字符串
10.1.10 字符串扣留
10.2 正则表达式
10.2.1 Match和MatchCollection
10.2.2 组和捕获
10.2.3 字符串-修改表达式
10.2.4 正则表达式选项
10.2.5 编译正则表达式
10.3 小结
第11章 用流进行文件I/O
11.1 流类
11.1.1 FileStream
11.1.2 StreamReader和StreamWriter
11.1.3 内存和缓冲流
11.1.4 字符串读取器和写出器
11.1.5 二进制读取器和写出器
11.2 文件系统类
11.2.1 Directory和DirectoryInfo
11.2.2 File和FileInfo
11.2.3 分析路径
11.3 流的非控制台使用方式
11.3.1 Windows OpenFileDialog
11.3.2 读取Web页面
11.4 串行化
11.4.1 使用BinaryFormatter进行串行化
11.4.2 使用SoapFormatter
11.4.3 使用XmlSerializer进行串行化
11.4.4 实现ISerializable
11.5 小结
第12章 用异常进行错误处理
12.1 异常处理概述
12.2 基本的异常处理语法
12.2.1 抛出异常
12.2.2 捕获异常
12.2.3 重新抛出一个异常
12.2.4 使用finally进行清理
12.3 重试代码
12.4 错误处理技术的比较
12.4.1 异常处理相对于返回编码的好处
12.4.2 在正确的上下文中处理错误
12.4.3 提高代码的可读性
12.4.4 从构造器抛出异常
12.5 使用System.Exception类
12.5.1 构造一个Exception对象
12.5.2 使用StackTrace特性
12.5.3 捕获多个异常类型
12.5.4 派生自己的Exception类
12.6 用异常处理设计代码
12.6.1 try块的设计问题
12.6.2 catch块的设计问题
12.7 小结
第13章 操作符重载和用户定义的转换
13.1 操作符重载
13.1.1 操作符重载的语法
13.1.2 操作符重载的规则和限制
13.1.3 操作符重载示例
13.1.4 RGB颜色递增示例
13.1.5 操作符重载的设计方针
13.2 用户定义的转换
13.2.1 用户定义的转换语法
13.2.2 用户定义的转换的规则和限制
13.2.3 用户定义的转换示例
13.3 小结
第14章 委托和事件处理器
14.1 将委托作为回调方法使用
14.2 委托的内幕
14.3 将委托定义为静态成员
14.4 只在需要时创建委托
14.5 多点委托
14.6 使用多点委托定义事件
14.7 小结
第15章 使用XML进行文档记录
15.1 入门
15.1.1 添加元素
15.1.2 可以接受注释的代码构造
15.2 编译器产生的元素ID
15.2.1 字段、特性、事件和索引器
15.2.2 方法
15.3 良构的XML
15.4 注释网页
15.5 元素标记和属性
15.5.1 标记和cref属性
15.5.2 和标记
15.5.3 标记
15.5.4 标记
15.6 定制的格式化
15.7 XML与数据
15.8 小结
第三部分 高级C#
第16章 数值处理和Math类
16.1 C#和.NET中的数值支持
16.1.1 Decimal类型是原始的类型吗
16.1.2 数值后缀
16.1.3 数值类型的各种名称
16.1.4 数值字面值
16.2 整数范围和溢出规则
16.3 Decimal类型
16.4 System.Math类
16.4.1 System.Math常量
16.4.2 处理数值的正负号
16.4.3 最小值和最大值
16.4.4 用于取整和截短的方法
16.5 小结
第17章 集合和对象枚举
17.1 实现枚举接口
17.1.1 使用枚举器对象
17.1.2 使用foreach语句处理集合
17.2 为什么需要两个接口
17.3 构造枚举器对象
17.4 创建具有版本的枚举器
17.5 将IEnumerable和IEnumerator合并
17.6 在允许枚举时保护数据
17.7 值类型
17.7.1 性能问题
17.7.2 修改值类型的集合数据
17.8 小结
第18章 多线程和异步编程
18.1 线程入门
18.2 线程处理的基本知识
18.2.1 创建线程和Thread对象
18.2.2 管理线程的生存周期
18.2.3 销毁线程
18.2.4 对线程进行调度
18.3 与线程进行数据通信
18.4 线程安全和同步
18.4.1 使用Monitor类保护代码
18.4.2 通过C# lock语句使用监视锁
18.4.3 使用Mutex类对代码进行同步
18.5 使用委托调用异步方法
18.6 线程安全和.NET类
18.7 线程方针
18.7.1 何时应该使用线程
18.7.2 何时不应该使用线程
18.8 小结
第19章 利用反射查询元数据
19.1 Reflection API层次结构
19.2 Type类
19.3 获得Type引用
19.3.1 获取一个实例的类型
19.3.2 从名称获取类型
19.3.3 查询类型
19.4 处理配件和模块
19.4.1 遍历配件的类型
19.4.2 列出配件的模块
19.5 使用反射进行晚绑定
19.6 使用反射实现抽象工厂
19.7 动态地生成代码
19.8 小结
第20章 固定和内存管理
20.1 垃圾收集
20.2 重定义Finalize
20.3 强行进行垃圾收集
20.4 Dispose模式
20.5 IDisposable接口
20.5.1 派生的可处置类
20.5.2 防止重复处置
20.5.3 对Dispose的语言支持
20.6 垃圾收集器代
20.7 弱引用
20.8 不安全的代码
20.9 固定
20.9.1 固定数组元素
20.9.2 间接引用成员操作符
20.9.3 使用stackalloc
20.10 小结
第21章 从C#应用程序使用COM
21.1 COM在当今的.NET环境中处于什么位置
21.2 从C#使用COM组件
21.2.1 创建ATL组件
21.2.2 从.NET应用程序使用COM组件
21.2.3 绑定和使用COM组件
21.2.4 使用COM组件进行动态类型发现
21.2.5 对COM对象进行晚绑定
21.3 事件处理
21.3.1 COM连接点的工作原理
21.3.2 创建一个产生事件的ATL COM组件
21.3.3 使用委托进行事件处理
21.3.4 在.NET应用程序中接收非托管的COM事件
21.4 使用COM集合
21.4.1 使用ATL创建COM集合对象
21.4.2 在.NET应用程序中使用COM集合
21.4.3 遍历.NET集合中的元素
21.5 在托管代码中重用COM组件
21.5.1 包含
21.5.2 聚合
21.5.3 通过混合模式的继承进行重用
21.5.4 通过混合模式的包含进行重用
21.5.5 .NET对COM线程模型和场所的感知
21.6 将方法关键字映射到IDL属性
21.7 小结
第22章 在非托管代码中使用.NET组件
22.1 通过COM创建和使用.NET组件
22.1.1 从配件产生类型库和注册配件
22.1.2 从Visual Basic 6客户使用组件
22.1.3 COM interop的内部机理
22.1.4 探究产生的类型库
22.2 使用属性影响产生的类型库元数据
22.2.1 修改接口类型
22.2.2 修改GUID和ProgID
22.2.3 对COM隐藏公共类型
22.2.4 修改类型的编组行为
22.3 异常处理:.NET与COM
22.4 在非托管事件接收器中处理来自.NET组件的事件
22.4.1 创建产生事件的.NET组件
22.4.2 在Visual Basic客户应用程序中处理事件
22.5 .NET组件中的线程从属关系
22.6 小结
第23章 安全性
23.1 .NET安全性
23.2 可检验的类型安全
23.3 代码签名
23.3.1 私有配件
23.3.2 强名称配件
23.3.3 全局配件缓存
22.3.4 延迟签名配件
23.4 密码服务
23.5 代码访问安全性
23.5.1 证据
23.5.2 安全策略
23.5.3 配置安全
23.5.4 CASpol
23.5.5 强制式和声明式CAS
23.5.6 标识权限
23.5.7 配件权限请求
23.6 基于角色的安全
23.6.1 PrincipalPermission请求
23.6.2 模仿
23.7 隔离的存储
23.8 小结
附录A MSIL指令表
猜您喜欢