导图社区 C高级编程第11版
C#高级编程第11版,分享了内容: 第一部分 C# 语言 第二部分 .NET Core 与 Windows Runtime 第三部分 Web应用程序和服务 第四部分 应用程序
编辑于2023-05-24 13:39:38 上海C#高级编程第11版
第一部分 C# 语言
第1章 .NET应用程序和工具
1.1 选择技术
1.2 回顾.NET历史
1.2.1 C# 1.0 一种新语言
1.2.2 带有泛型的C# 2和.NET 2
1.2.3 .NET 3.0 Windows Presentation Foundation
1.2.4 C# 3 和.NET 3.5——LINQ
1.2.5 C# 4 和.NET 4.0——dynamic 和 TPL
1.2.6 C# 5 和异步编程
1.2.7 C# 6 和.NET Core 1.0
1.2.8 C# 7 和.NET Core 2.0
1.2.9 选择技术,继续前进
1.3 .NET 术语
1.3.1 .NET Framework
1.3.2 .NET Core
1.3.3 .NET Standard
1.3.4 NuGet包
1.3.5 名称空间
1.3.6 公共语言运行库
1.3.7 Windows 运行库
1.4 用.NET Core CLI 编译
1.4.1设置环境
1.4.2创建应用程序
1.4.3构建应用程序
1.4.4运行应用程序
1.4.5创建Web应用程序
1.4.6发布应用程序
1.5 使用 Visual Studio 2017
1.6 应用程序类型和技术
1.6.1数据访问
1.6.2 Windows 应用程序
1.6.3 Xamarin
1.6.4 Web应用程序
1.6.5 WbAPI
1.6.6 WebHooks 和SigiialR
1.6.7 Microsoft Azure
1.7开发工具
1.7.1 Visual Studio Coinmiuiity
1.7.2 Visual Studio Professional
1.7.3 Visual Studio Enterprise
1.7.4 Visual Studio for Mac
1.7.5 Visual Studio Code
1.8 小结
第2章 核心C#
2.1 C# 基础
2.2 变量
2.2.1 初始化变量
2.2.2 类型推断
2.2.3 变量的作用域
2.2.4 常量
2.3 预定义数据类型
2.3.1 值类型和引用类型
2.3.2 .NET 类型
2.3.3 预定义的值类型
2.3.4 预定义的引用类型
2.4 程序流控制
2.4.1 条件语句
2.4.2 循环
2.4.3 跳转语句
2.5 名称空间
2.5.1 using 语句
2.5.2 名称空间的别名
2.6 Main()方法
2.7 使用注释
2.7.1 源文件中的内部注释
2.7.1 XML 文档
2.8 C#预处理器指令
2.8.1 #define 和#undef
2.8.2 #if、#elif、#else 和#endif
2.8.3 #warning 和#error
2.8.4 #region 和#endregion
2.8.5 #line
2.8.6 #pragma
2.9 C#编程准则
2.9.1 关于标识符的规则
2.9.2 用法约定
2.10 小结
第3章 对象和类型
3.1创建及使用类
3.2类和结构
3.3 类
33.1字段
3.3.2只读字段
3.3.3属性
3.3.4匿名类型
3.3.5方法
3.3.6构造函数
3.4 结构
3.4.1 结构是值类型
3.4.2 只读结构
3.4.3 结构和继承
3.4.4 结构的构造函数
3.4.5 ref 结构
3.5 按值和按引用传递参数
3.5.1 ref 参数
3.5.2 out 参数
3.5.3 in 参数
params
3.6 可空类型
3.7 枚举类型
3.8 部分类
3.9 扩展方法
3.10 Object 类
3.11 小结
第4章 继承
4.1 面向对象
4.2 继承的类型
4.2.1 多重继承
4.2.2 结构和类
4.3 实现继承
4.3.1 虚方法
4.3.2 多态性
4.3.3 隐藏方法
4.3.4 调用方法的基类版本
4.3.5 抽象类和抽象方法
43.6 密封类和密封方法
4.3.7 派生类的构造函数
4.4 修饰符
4.4.1 访问修饰符
4.4.2 其他修饰符
4.5 接口
4.5.1 定义和实现接口
4.5.2 派生的接口
4.6 is和as运算符
4.7 小结
第5章 泛型
5.1 泛型概述
5.1.1 性能
5.1.2 类型安全
51.3 二进制代码的重用
5.1.4 代码的扩展
51.5 命名约定
5.2 创建泛型类
5.3 泛型类的功能
5.3.1 默认值
5.3.2 约束
5.3.3 继承
5.3.4 静态成员
5.4 泛型接口
5.4.1 协变和抗变
5.4.2 泛型接口的协变
5.4.3 泛型接口的抗变
5.5 泛型结构
5.6 泛型方法
5.6.1 泛型方法示例
5.6.2 带约束的泛型方法
5.6.3 带委托的泛型方法
5.6.4 泛型方法规范
5.7 小结
第6章 运算符和类型强制转换
6.1 运算符和类型转换
6.2 运算符
6.2.1 运算符的简化操作
6.2.2 运算符的优先级和关联性
6.3 使用二进制运算符
6.3.1 位的移动
6.3.2 有符号数和无符号数
6.4 类型的安全性
6.4.1 类型转换
6.4.2 装箱和拆箱
6.5 比较对象的相等性
6.5.1 比较引用类型的相等性
6.5.2 比较值类型的相等性
6.6 运算符重载
6.6.1 运算符的工作方式
6.6.2 运算符重载的示例:Vector结构
6.6.3 比较运算符的重载
6.6.4 可以重载的运算符
6.7 实现自定义的索引运算符
6.8 用户定义的类型强制转换
6.8.1 实现用户定义的类型强制转换
6.8.2 多重类型强制转换
6.9 小结
第7章 数组
7.1 相同类型的多个对象
7.2 简单数组
7.2.1 数组的声明
7.2.2 数组的初始化
7.2.3 访问数组元素
7.2.4 使用引用类型
7.3 多维数组
7.4 锯齿数组
7.5 Array 类
7.5.1 创建数组
7.5.2 复制数组
7.5.3 排序
7.6 数组作为参数
7.7 数组协变
7.8 枚举
7.8.1 lEnumerator 接口
7.8.2 foreach 语句
7.8.3 yield 语句
7.9 结构比较
7.10 Span
7.10.1 创建切片
7.10.2 使用Span改变值
7.10.3 只读的 Span
7.11 数组池
7.11.1 创建数组池
7.11.2 从池中租用内存
7.11.3 将内存返回给池
7.12 小结
第8章 委托、lambda表达式和事件
8.1 引用方法
8.2 委托
8.2.1 声明委托
8.2.2 使用委托
8.2.3 简单的委托示例
8.2.4 Action<T>和 Func<T>委托
8.2.5 BubbleSorter 示例
8.2.6 多播委托
8.2.7 匿名方法
8.3 lambda 表达式
8.3.1 参数
8.3.2 多行代码
8.3.3 闭包
8.4 事件
8.4.1 事件发布程序
8.4.2 事件侦听器
8.5 小结
第9章 字符串和正则表达式
9.1 System. String 类
9.1.1 构建字符串
9.1.2 StringBuilder 成员
9.2 字符串格式
9.2.1 字符串插值
9.2.2 日期时间和数字的格式
9.2.3 自定义字符串格式
9.3 正则表达式
9.3.1 正则表达式概述
9.3.2 RegularExpressionsPlayground 示例
9.3.3 显示结果
9.3.4 匹配、组和捕获
9.4 字符串和Span
9.5 小结
第10章 集合
10.1 概述
10.2 集合接口和类型
10.3 列表
10.3.1 创建列表
10.3.2 只读集合
10.4 队列
10.5 栈
10.6 链表
10.7 有序列表
10.8 字典
10.8.1 字典初始化器
10.8.2 键的类型
10.8.3 字典示例
10.8.4 Lookup 类
10.8.5 有序字典
10.9 集
10.10 性能
10.11 小结
第11章 特殊的集合
11.1 概述
11.2 处理位
11.2.1 BitArray 类
11.2.2 BitVector32结构
11.3 可观察的集合
11.4 不变的集合
11.4.1 使用构建器和不变的集合
11.4.2 不变集合类型和接口
11.4.3 使用LINQ和不变的数组
11.5 并发集合
11.5.1 创建管道
11.5.2 使用 Blockingcollection
11.5.3 使用 ConcurrentDictionary
11.5.4 完成管道
11.6 小结
第12章 LINQ
12.1 LINQ 概述
12.1.1 列表和实体
12.1.2 LINQ 査询
12.1.3 扩展方法
12.1.4 推迟査询的执行
12.2 标准的查询操作符
12.2.1 筛选
12.2.2 用索引筛选
12.2.3 类型筛选
12.2.4 复合的from子句
12.2.5 排序
12.2.6 分组
12.2.7 LINQ査询中的变量
12.2.8 对嵌套的对象分组
12.2.9 内连接
12.2.10 左外连接
12.2.11 组连接
12.2.12 集合操作
12.2.13 合并
12.2.14 分区
12.2.15 聚合操作符
12.2.16 转换操作符
12.2.17 生成操作符
12.3 并行LINQ
12.3.1 并行査询
12.3.2 分区器
12.3.3 取消
12.4 表达式树
12.5 LINQ提供程序
12.6 小结
第13章 C#函数式编程
13.1 概述
13.1.1 避免状态突变
13.1.2 函数作为第一个类
13.2 表达式体的成员
13.3 扩展方法
13.4 using static 声明
13.5 本地函数
13.5.1 本地函数与yield语句
13.5.2 递归本地函数
13.6 元组
13.6.1 元组的声明和初始化
13.6.2 元组解构
13.6.3 元组的返回
13.6.4 幕后的原理
13.6.5 ValueTuple与元组的兼容性
13.6.6 推断出元组名称
13.6.7 元组与链表
13.6.8 元组和 LINQ
13.6.9 解构
13.6.10 解构与扩展方法
13.7 模式匹配
13.7.1 模式匹配与is运算符
13.7.2 模式匹配与switch语句
13.7.3 模式匹配与泛型
13.8 小结
第14章 错误和异常
14.1 简介
14.2 异常类
14.3 捕获异常
14.3.1 异常和性能
14.3.2 实现多个catch块
14.3.3 在其他代码中捕获异常
14.3.4 System.Exception 属性
14.3.5 异常过滤器
14.3.6 重新抛出异常
14.3.7 没有处理异常时发生的情况
14.4 用户定义的异常类
14.4.1 捕获用户定义的异常
14.4.2 抛出用户定义的异常
14.4.3 定义用户定义的异常类
14.5 调用者信息
14.6 小结
第15章 异步编程
15.1 异步编程的重要性
15.2 异步编程的.NET历史
15.2.1 同步调用
15.2.2 异步模式
15.2.3 基于事件的异步模式
15.2.4 基于任务的异步模式
15.2.5 异步 Main()方法
15.3 异步编程的基础
15.3.1 创建任务
15.3.2 调用异步方法
15.3.3 使用 Awaiter
15.3.4 延续任务
15.3.5 同步上下文
15.3.6 使用多个异步方法
15.3.7 使用 ValueTasks
15.3.8 转换异步模式
15.4 错误处理
15.4.1 异步方法的异常处理
15.4.2 多个异步方法的异常处理
15.4.3 使用 AggregateException 信息
15.5 异步与Windows应用程序
15.5.1 配置await
15.5.2 切换到UI线程
15.5.3 使用 lAsyncOperation
15.5.4 避免阻塞情况
15.6 小结
第16章 反射、元数据和动态编程
16.1 在运行期间检查代码和动态编程
16.2 自定义特性
16.2.1 编写自定义特性
16.2.2 自定义特性示例:WhatsNewAttributes
16.3 反射
16.3.1 System.Type 类
16.3.2 TypeView 示例
16.3.3 Assembly 类
16.3.4 完成 WhatsNewAttributes 示例
16.4 为反射使用动态语言扩展
16.4.1 创建 Calculator 库
16.4.2 动态实例化类型
16.4.3 用 Reflection API 调用成员
16.4.4 使用动态类型调用成员
16.5 dynamic 类型
16.6 DyiiainicObject 和 ExpandoObject
概述
16.6.1 DynaniicObject
16.6.2 ExpandoObject
16.7 小结
第17章 托管和非托管内存
17.1 内存
17.2 后台内存管理
17.2.1 值数据类型
17.2.2 引用数据类型
17.2.3 垃圾收集
17.3 强引用和弱引用
17.4 处理非托管的资源
17.4.1 析构函数或终结器
17.4.2 IDisposable 接口
17.4.3 using 语句
17.4.4 实现IDisposable接口和析构函数
17.4.5 IDisposable和终结器的规则
17.5 不安全的代码
17.5.1 用指针直接访问内存
17.5.2 指针示例:PointerPlayground
17.5.3 使用指针优化性能
17.6 引用的语义
17.6.1 传递ref和返回ref
17.6.2 ref 和数组
17.7 Span<T>
17.7.1 Span引用托管堆
17.7.2 Span引用栈
17.7.3 Span引用本机堆
17.7.4 Span扩展方法
17.8 平台调用
17.9 小结
第18章 VisualStudio 2017
18.1 使用VisualStudio 2017
18.1.1 VisualStudio的版本
18.1.2 VisualStudio设置
18.2 创建项目
18.2.1 面向多个版本的.NET
18.2.2 选择项目类型
18.3 浏览并编写项目
18.3.1 Solution Explorer
18.3.2 使用代码编辑器
18.3.3 学习和理解其他窗口
18.3.4 排列窗口
18.4 构建项目
18.4.1 构建、编译和生成代码
18.4.2 调试版本和发布版本
18.4.3 选择配置
18.4.4 编辑配置
18.5 调试代码
18.5.1 设置断点
18.5.2 使用数据提示和调试器可视化工具
18.5.3 Live Visual Tree
18.5.4 监视和修改变量
18.5.5 异常
18.5.6 多线程
18.6 重构工具
18.7 诊断工具
18.8 通过Docker创建和使用容器
18.8.1 Docker 简介
18.8.2 在Docker容器中运行ASP .NET Core
18.8.3 创建Dockerfile
18.8.4 使用 Visual Studio
18.9小结
第二部分 .NET Core 与 Windows Runtime
第19章 库、程序集、包和NuGet
19.1 库的地狱
19.2 程序集
19.3 创建库
19.3.1 .NET 标准
19.3.2 创建.NET标准库
19.3.3 解决方案文件
19.3.4 引用项目
19.3.5 引用NuGet包
19.3.6 NuGet的来源
19.3.7 使用.NET Framework库
19.4 使用共享项目
19.5 创建NuGet包
19.5.1 NuGet包和命令行
19.5.2 支持多个平台
19.5.3 NuGet 包与 Visual Studio
19.6 小结
第20章 依赖注入
20.1 依赖注入的概念
20.1.1 使用没有依赖注入的服务
20.1.2 使用依赖注入
20.2 使用.NET Core DI 容器
20.3 服务的生命周期
20.3.1 使用单例和临时服务
20.3.2 使用Scoped服务
20.3.3 使用自定义工厂
20.4 使用选项初始化服务
20.5 使用配置文件
20.6 创建平台独立性
20.6.1 .NET 标准库
20.6.2 WPF应用程序
20.6.3 UWP 应用程序
20.6.4 Xamarin应用程序
20.7 使用其他DI容器
20.8 小结
第21章 任务和并行编程
21.1 概述
21.2 Parallel 类
21.2.1 使用Parallel.For()方法循环
21.2.2 提前中断Parallel.For
21.2.3 Parallel.For()方法的初始化
21.2.4 使用Parallel.ForEach()方法循环
21.2.5 通过Parallel.Invoke()方法调用多个方法
21.3 任务
21.3.1 启动任务
21.3.2 Future——任务的结果
21.3.3 连续的任务
21.3.4 任务层次结构
21.3.5 从方法中返回任务
21.3.6 等待任务
21.4 取消架构
21.4.1 Parallel.For()方法的取消
21.4.2 任务的取消
21.5 数据流
21.5.1 使用动作块
21.5.2 源和目标数据块
21.5.3 连接块
21.6 Timer类
21.7 线程问题
21.7.1 争用条件
21.7.2 死锁
21.8 lock语句和线程安全
21.9 Interlocked类
21.10 Monitor类
21.11 SpinLock 结构
21.12 WaitHandle基类
21.13 Mutex类
21.14 Semaphore类
21.15 Events类
21.16 Barrier类
21.17 ReaderWriterLockSlim类
21.18 Lock 和 await
21.19 小结
第22章 文件和流
22.1 概述
22.2 管理文件系统
22.2.1 检查驱动器信息
22.2.2 使用 Path 类
22.2.3 创建文件和文件夹
22.2.4 访问和修改文件属性
22.2.5 使用File执行读写操作
22.3 枚举文件
22.4 使用流
22.4.1 使用文件流
22.4.2 读取流
22.4.3 写入流
22.4.4 复制流
22.4.5 随机访问流
22.4.6 使用缓存的流
22.5 使用读取器和写入器
22.5.1 StreamReader 类
22.5.2 StreamWriter类
22.5.3 读写二进制文件
22.6 压缩文件
22.6.1 使用压缩流
22.6.2 使用 Brotli
22.6.3 压缩文件
22.7 观察文件的更改
22.8 使用内存映射的文件
22.8.1 使用访问器创建内存映射文件
22.8.2 使用流创建内存映射文件
22.9 使用管道通信
22.9.1 创建命名管道服务器
22.9.2 创建命名管道客户端
22.9.3 创建匿名管道
22.10 通过Windows运行库使用文件和流
22.10.1 Windows App编辑器
22.10.2 把Windows Runtime类型映射为.NET 类型
22.11 小结
第23章 网络
23.1 概述
23.2 HttpClient类
23.2.1 发出异步的Get请求
23.2.2 抛出异常
23.2.3 传递标题
23.2.4 访问内容
23.2.5 用 HttpMessageHandler 自定义请求
23.2.6 使用 SendAsync创建HttpRequestMessage
23.2.7 使用HttpClient和Windows Runtime
23.3 使用 WebListener类
23.4 使用实用工具类
23.4.1 URI
23.4.2 IPAddress
23.4.3 IPHostEntry
23.4.4 Dns
23.5 使用 TCP
23.5.1 使用TCP创建HTTP客户程序
23.5.2 创建TCP侦听器
23.5.3 创建TCP客户端
23.5.4 TCP 和 UDP
23.6 使用 UDP
23.6.1 建立UDP接收器
23.6.2 创建UDP发送器
23.6.3 使用多播
23.7 使用套接字
23.7.1 使用套接字创建侦听器
23.7.2 使用 NetworkStream 和套接字
23.7.3 通过套接字使用读取器和写入器
23.7.4 使用套接字实现接收器
23.8 小结
第24章 安全性
24.1 概述
24.2 验证用户信息
24.2.1 使用 Windows 标识
24.2.2 Windows Principal
24.2.3 使用声称
24.3 加密数据
24.3.1 创建和验证签名
24.3.2 实现安全的数据交换
24.3.3 使用RSA签名和散列
24.4 保护数据
24.4.1 实现数据保护
24.4.2 用户机密
24.5 资源的访问控制
24.6 Web 安全性
24.6.1 编码
24.6.2 SQL 注入
24.6.3 跨站点请求伪造
24.7 小结
第25章 ADO.NET和事务
25.1 ADO.NET概述
25.1.1 示例数据库
25.1.2 NuGet包和名称空间
25.2 使用数据库连接
25.2.1 管理连接字符串
25.2.2 连接池
25.2.3 连接信息
25.3 命令
25.3.1 ExecuteNonQuery()方法
25.3.2 ExecuteScalar()方法
25.3.3 ExecuteReader()方法
25.3.4 调用存储过程
25.4 异步数据访问
25.5 事务
25.6 事务和 System.Transaction
25.6.1 可提交的事务
25.6.2 依赖事务
25.6.3 环境事务
25.6.4 嵌套作用域和环境事务
25.7 小结
第26章 Entity Framework Core
26.1 Entity Framework 简史
26.2 EF Core 简介
26.2.1 创建模型
26.2.2 约定、注释和流利API
26.2.3 创建上下文
26.2.4 创建数据库
26.2.5 删除数据库
26.2.6 写入数据库
26.2.7 读取数据库
26.2.8 更新记录
26.2.9 删除记录
26.2.10 日志记录
26.3 使用依赖注入
26.4 创建模型
26.4.1 创建关系
26.4.2 数据注释
26.4.3 流利 API
26.4.4 自包含类型的配置
26.4.5 在数据库中搭建模型
26.4.6 映射到字段
26.4.7 阴影属性
26.5 查询
26.5.1 基本査询
26.5.2 客户端和服务器求值
26.5.3 原始 SQL 査询
26.5.4 己编译査询
26.5.5 全局査询过滤器
26.5.6 EF.Functions
26.6 关系
26.6.1 使用约定的关系
26.6.2 显式加载相关数据
26.6.3 即时加载相关数据
26.6.4 使用注释的关系
26.6.5 使用流利API的关系
26.6.6 根据约定的每个层次结构的表
26.6.7 使用流利API的每个层次结构中的表
26.6.8 表的拆分
26.6.9 拥有的实体
26.7 保存数据
26.7.1 用关系添加对象
26.7.2 对象的跟踪
26.7.3 更新对象
26.7.4 更新未跟踪的对象
26.7.5 批处理
26.8 冲突的处理
26.8.1 最后一个更改获胜
26.8.2 第一个更改获胜
26.9 上下文池
26.10 使用事务
26.10.1 使用隐式的事务
26.10.2 创建显式的事务
26.11 迁移
26.11.1 准备项目文件
26.11.2 利用 ASP.NET Core MVC 托管应用程序
26.11.3 托管.NET Core控制台应用程序
26.11.4 创建迁移
26.11.5 以编程方式应用迁移
26.11.6 应用迁移的其他方法
26.12 小结
第27章 本地化
27.1 全球市场
27.2 System.Globalization 名称空间
27.2.1 Unicode 问题
27.2.2 区域性和区域
27.2.3 使用区域性
27.2.4 排序
27.3 资源
27.3.1 资源读取器和写入器
27.3.2 使用资源文件生成器
27.3.3 通过 ResourceManager 使用资源文件
27.3.4 System.Resources 名称空间
27.4 使用 ASP.NET Core 本地化
27.4.1 注册本地化服务
27.4.2 注入本地化服务
27.4.3 区域性提供程序
27.4.4 在 ASP.NET Core 中使用资源
27.4.5 使用控制器和视图进行本地化
27.5 本地化 UWP
27.5.1 给UWP使用资源
27.5.2 使用多语言应用程序工具集进行本地化
27.6 小结
第28章 测试
28.1 概述
28.2 使用MSTest进行单元测试
28.2.1 使用MSTest创建单元测试
28.2.2 运行单元测试
28.2.3 使用MSTest预期异常
28.2.4 测试全部代码路径
28.2.5 外部依赖
28.3 使用xUnit进行单元测试
28.3.1 使用 xUnit 和.NET Core
28.3.2 创建 Fact 属性
28.3.3 创建Theory特性
28.3.4 使用 Mocking 库
28.4 实时单元测试
28.5 使用EF Core进行单元测试
28.6 使用Windows应用程序进行UI 测试
28.7 Web集成、负载和性能测试
28.7.1 ASP.NET Core 集成测试
28.7.2 创建 Web 测试
28.7.3 运行 Web 测试
28.8 小结
第29章 跟踪、日志和分析
29.1 诊断概述
29.2 使用EventSomce跟踪
29.2.1 Eventsource 的简单用法
29.2.2 跟踪工具
29.2.3 派生自 EventSource
29.2.4 使用注释和 EventSource
29.2.5 创建事件清单模式
29.2.6 使用活动ID
29.3 创建自定义侦听器
29.4 使用ILogger接口编写日志
29.4.1 配置提供程序
29.4.2 使用作用域
29.4.3 过滤
29.4.4 配置日志记录
29.4.5 使用没有依赖注入的ILogger
29.5 使用 Visual Studio App Center进行分析
29.6 小结
第三部分 Web应用程序和服务
第30章 ASP.NET Core
30.1 概述
30.2 Web 技术
30.2.1 HTML
30.2.2 CSS
30.2.3 JavaScript 和 Typescript
30.2.4 脚本库
30.3 ASP.NET Web 项目
30.3.1 启动
30.3.2 示例应用程序
30.4 添加客户端内容
30.4.1 为客户端内容使用工具
30.4.2 通过Bower使用客户端库
30.4.3 使用 JavaScript 包管理器npm
30.4.4 捆绑
30.4.5 用 webpack 打包
30.5 请求和响应
30.5.1 请求标题
30.5.2 査询字符串
30.5.3 编码
30.5.4 表单数据
30.5.5 cookie
30.5.6 发送 JSON
30.6 依赖注入
30.6.1 定义服务
30.6.2 注册服务
30.6.3 注入服务
30.6.4 调用控制器
30.7 简单的路由
30.8 创建自定义的中间件
30.9 会话状态
30.10 用 ASP.NET Core 配置
30.10.1 读取配置
30.10.2 修改配置提供程序
30.10.3 基于环境的不同配置
30.11 小结
第31章 ASP.NET Core MVC
31.1 为 ASP.NET Core MVC 建立服务
31.2 定义路由
31.2.1 添加路由
31.2.2 使用路由约束
31.3 创建控制器
31.3.1 理解动作方法
31.3.2 使用参数
31.3.3 返回数据
31.3.4 使用 Controller 基类和 POCO控制器
31.4 创建视图
31.4.1 向视图传递数据
31.4.2 Razor 语法
31.4.3 创建强类型视图
31.4.4 定义布局
31.4.5 用部分视图定义内容
31.4.6 使用视图组件
31.4.7 在视图中使用依赖注入
31.4.8 为多个视图导入名称空间
31.5 从客户端提交数据
31.5.1 模型绑定器
31.5.2 注解和验证
31.6 使用 HTML Helper
31.6.1 简单的Helper
31.6.2 使用模型数据
31.6.3 定义HTML特性
31.6.4 创建列表
31.6.5 强类型化的Helper
31.6.6 编辑器扩展
31.6.7 实现模板
31.7 Tag Helper
31.7.1 激活 Tag Helper
31.7.2 使用锚定 Tag Helper
31.7.3 使用 Label Tag Helper
31.7.4 使用 Input Tag Helper
31.7.5 使用表单进行验证
31.7.6 environment Tag Helper
31.7.7 创建自定义 Tag Helper
31.7.8 用 Tag Helper 创建元素
31.8 实现动作过滤器
31.9 创建数据驱动的应用程序
31.9.1 定义模型
31.9.2 创建数据库
31.9.3 创建服务
31.9.4 创建控制器
31.9.5 创建视图
31.10 实现身份验证和授权
31.10.1 存储和检索用户信息
31.10.2 启动身份系统
31.10.3 执行用户注册
31.10.4 设置用户登录
31.10.5 验证用户的身份
31.10.6 使用 Azure Active Diiectory 对用户进行身份验证
31.11 Razor页面
31.11.1 创建一个Razor页面项目
31.11.2 实现数据访问
31.11.3 使用内联代码
31.11.4 使用内联代码和页面模型
31.11.5 使用代码隐藏文件
31.11.6 页面参数
31.12 小结
第32章 Web API
32.1 概述
32.2 创建服务
32.2.1 定义模型
32.2.2 创建服务
32.2.3 创建控制器
32.2.4 修改响应格式
32.2.5 REST结果和状态码
32.3 创建异步服务
32.4 创建.NET客户端
32.4.1 发送 GET 请求
32.4.2 从服务中接收XML
32.4.3 发送 POST 请求
32.4.4 发送 PUT 请求
32.4.5 发送 DELETE 请求
32.5 写入数据库
32.5.1 使用 EF Core
32.5.2 创建数据访问服务
32.6 用 OpenAPI 或 Swagger 创建元数据
32.7 创建和使用OData服务
32.7.1 创建数据模型
32.7.2 创建数据库
32.7.3 OData 启动代码
32.7.4 创建OData控制器
32.7.5 OData 査询
32.8 使用 Azure Function
32.8.1 创建 Azure Function
32.8.2 使用依赖注入容器
32.8.3 实现 GET、POST 和 PUT 请求
32.8.4 运行 Azure Function
32.9 小结
第四部分 应用程序
第33章 Windows应用程序
33.1 Windows应用程序简介
33.1.1 Windows 运行库
33.1.2 Hello. Windows
33.1.3 应用程序清单文件
33.1.4 应用程序启动
33.1.5 主页
33.2 XAML
33.2.1 XAML 标准
33.2.2 将元素映射到类
33.2.3 通过XAML使用定制的.NET类
33.2.4 将属性用作特性
33.2.5 将属性用作元素
33.2.6 依赖属性
33.2.7 创建依赖属性
33.2.8 值变更回调和事件
33.2.9 路由事件
33.2.10 附加属性
33.2.11 标记扩展
33.2.12 自定义标记扩展
33.2.13 条件 XAML
33.3 控件
33.3.1 框架派生的UI元素
33.3.2 控件派生的控件
33.3.3 范围控件
33.3.4 内容控件
33.3.5 按钮
33.3.6 项控件
33.3.7 Flyout 控件
33.4 数据绑定
33.4.1 用 INotifyPropertyChanged 更改通知
33.4.2 创建图书列表
33.4.3 列表绑定
33.4.4 把事件绑定到方法
33.4.5 使用数据模板和数据模板选择器
33.4.6 绑定简单对象
33.4.7 值的转换
33.5 导航
33.5.1 导航回最初的页面
33.5.2 重写Page类的导航
33.5.3 在页面之间导航
33.5.4 后退按钮
33.5.5 Hub
33.5.6 Pivot
33.5.7 NavigationView
33.6 布局
33.6.1 StackPanel
33.6.2 Canvas
33.6.3 Grid
33.6.4 VariableSizedWrapGrid
33.6.5 RelativePanel
33.6.6 自适应触发器
33.6.7 XAML 视图
33.6.8 延迟加载
33.7 小结
第34章 模式和XAML应用程序
34.1 使用MWM的原因
34.2 定义MWM模式
34.3 共享代码
34.3.1 使用API协定和通用Windows平台
34.3.2 使用共享项目
34.3.3 使用.NET标准库
34.4 示例解决方案
34.5 模型
34.5.1 实现变更通知
34.5.2 使用 Repository 模式
34.6 服务
34.7 视图模型
34.7.1 使用 lEditableObject
34.7.2 视图模型的具体实现
34.7.3 命令
34.7.4 服务、ViewModel和依赖注入
34.8 视图
34.8.1 从视图模型中打开对话框
34.8.2 页面之间的导航
34.83 自适应用户界面
34.8.4 显示进度信息
34.8.5 使用列表项中的操作
34.9 使用事件传递消息
34.10 使用框架
34.11 小结
第35章 样式化Windows应用程序
35.1 样式设置
35.2 形状
35.3 几何图形
35.3.1 使用段的几何图形
35.3.2 使用PathMarkup的几何图形
35.4 变换
35.4.1 缩放
35.4.2 平移
35.4.3 旋转
35.4.4 倾斜
35.4.5 组合变换和复合变换
35.4.6 使用矩阵的变换
35.5 画笔
35.5.1 SolidColorBnish
35.5.2 LinearGradientBrush
35.5.3 ImageBrush
35.5.4 AcrylicBrush
35.5.5 RevealBrush
35.6 样式和资源
35.6.1 样式
35.6.2 资源
35.6.3 从代码中访问资源
35.6.4 资源字典
35.6.5 主题资源
35.7 模板
35.7.1 控件模板
35.7.2 数据模板
35.7.3 样式化 ListView
35.7.4 ListView项的数据模板
35.7.5 项容器的样式
35.7.6 项面板
35.7.7 列表视图的控件模板
35.8 动画
35.8.1 时间轴
35.8.2 缓动函数
35.8.3 关键帧动画
35.8.4 过渡
35.9 可视化状态管理器
35.9.1 用控件模板预定义状态
35.9.2 定义自定义状态
35.9.3 设置自定义的状态
35.10 小结
第36章 高级Windows应用程序
36.1 概述
36.2 应用程序的生命周期
36.2.1 应用程序的执行状态
36.2.2 在页面之间导航
36.3 导航状态
36.3.1 暂停应用程序
36.3.2 激活哲停的应用程序
36.3.3 测试暂停
36.3.4 页面状态
36.4 共享数据
36.4.1 共享源
36.4.2 共享目标
36.5 应用程序服务
36.5.1 创建模型
36.5.2 为应用程序服务连接创建后台任务
36.5.3 注册应用程序服务
36.5.4 调用应用程序服务
36.6 高级的编译绑定
36.6.1 己编译数据绑定的生命周期
36.6.2 绑定到方法上
36.6.3 用 x:Bind 分阶段
36.7 使用文本
36.7.1 使用字体
36.7.2 内联和块元素
36.7.3 使用溢出区域
36.8 上墨
36.9 自动建议
36.10 小结
第37章 Xamarin.Forms
37.1 Xamarin 开发入 门
37.1.1 用Android架构Xamarin
37.1.2 用 iOS 架构 Xamarin
37.1.3 Xamarm.Fomis
37.2 Xamarin 开发工具
37.2.1 Android
37.2.2 iOS
37.2.3 Visual Studio 2017
37.2.4 Visual Studio for Mac
37.2.5 Visual Studio App Center
37.3 Andioid基础
37.3.1 活动
37.3.2 资源
37.3.3 显示列表
37.3.4 显示消息
37.4 iOS 基础
37.4.1 iOS应用程序结构
37.4.2 故事板
37.4.3 控制器
37.4.4 显示消息
37.5 Xamarin. Fomis 应用程序
37.5.1 托管 Xamarin 的 Windows应用程序
37.5.2 托管 Xainarin的Andioid
37.5.3 托管 Xamarin的 iOS
37.5.4 共享的项目
37.6 使用公共库
37.7 控件层次结构
37.8 页面
37.9 导航
37.10 布局
37.11 视图
37.12 数据绑定
37.13 命令
37.14 ListView 和 ViewCell
37.15 小结