C#高级编程C#6&NETCore10Christi百度网盘pdf下载
免费下载
书籍下载
内容介绍
基本信息
书名:C#高级编程(第10版) C# 6 & NET Core 1 0
定价:168.00元
售价:117.60元,便宜50.40元,折扣70
作者: Christian Nagel 李铭
出版社:清华大学出版社
出版日期:2017-04-01
ISBN:9787302461968
字数:
页码:
版次:1
装帧:平装-胶订
开本:16开
商品重量:0.4kg
编辑推荐
对于开发人员,把C#语言和.NET描述为*重要的新技术一点都不夸张。.NET提供了一种环境。在这种环境中,可以开发在Windows上运行的几乎所有应用程序。在Windows上运行的是.NET Framework以前的版本,新版本.NET Core 1.0不仅在Windows上运行,还在Linux和Mac系统上运行。C#是专门用于.NET的编程语言。
内容提要
提升C#和.NET技能的必备参考资源 Visual Studio 2015、ASP.NET Core 1.0和Universal Windows Platform的推出,为开发人员提供了使用C#创建应用程序的新方式。作为经典C#畅销书 ,本书涵盖了充分利用升级功能,积极简化工作流程所需的全部信息。本书循序渐进地讲解了Visual Studio 2015、.NET Core 1.0、ASP.NET MVC、Universal Windows Platform、WPF的*变化。每一章都提供了清晰的解释、下载的代码,并从专家的角度提供了有价值的视野。有本书在手,读者可以快速获得*的特性和功能。主要内容◆ 通过.NET Core 和C# 6的增强功能,重新塑造了.NET平台,包括新增的.NET编译器平台◆ 展示了如何使用新的Visual Studio工具和用于ASP.NET Core 1.0、ASP.NET MVC、Web API、WPF和Universal Windows Platform的模板◆ 介绍允许应用程序在Windows、Linux和OS X上运行的.NET Core框架,还囊括了任务和并行编程,访问文件系统,以及网络堆栈◆ 演示了如何使用ASP.NET MVC 6和Web API创建Web应用程序,以及利用SignalR和WebHooks的推送通知◆ 介绍专业开发功能,例如单元测试,通过MVVM模式在WPF和Universal Windows Platform之间共享代码
目录
第Ⅰ部分 C# 语 言
第1章 .NET应用程序体系结构 2
1.1 选择技术 2
1.2 回顾.NET历史 3
1.2.1C# 1.0 ——一种新语言 3
1.2.2带有泛型的C# 2和.NET 2 5
1.2.3.NET 3.0—— Windows
Presentation Foundation 5
1.2.4C# 3和.NET 3.5—— LINQ 5
1.2.5C# 4和.NET 4.0—— dynamic
和TPL 6
1.2.6C# 5和异步编程 6
1.2.7C# 6和.NET Core 7
1.2.8选择技术,继续前进 8
1.3.NET 2015 8
1.3.1.NET Framework 4.6 9
1.3.2.NET Core 1.0 10
1.3.3程序集 11
1.3.4NuGet 包 12
1.3.5公共语言运行库 13
1.3.6.NET Native 14
1.3.7Windows 运行库 14
1.4Hello, World 15
1.5 用.NET 4.6编译 16
1.6 用.NET CoreCLI编译 17
1.6.1设置环境 18
1.6.2构建应用程序 18
1.6.3打包和发布应用程序 21
1.7 应用程序类型和技术 22
1.7.1数据访问 22
1.7.2Windows桌面应用程序 23
1.7.3UWP 24
1.7.4SOAP服务和WCF 24
1.7.5Web服务和ASP.NET Web
API 24
1.7.6WebHooks和SignalR 25
1.7.7Windows服务 25
1.7.8Web应用程序 25
1.7.9Microsoft Azure 26
1.8 开发工具 27
1.8.1Visual Studio Community 27
1.8.2Visual Studio Professional with
MSDN 27
1.8.3Visual Studio Enterprise with
MSDN 27
1.8.4Visual Studio Code 28
1.9 小结 28
第2章 核心C# 29
2.1C#基础 30
2.2 用VisualStudio创建Hello,
World! 30
2.2.1创建解决方案 30
2.2.2创建新项目 31
2.2.3编译和运行程序 33
2.2.4代码的详细介绍 35
2.3 变量 36
2.3.1初始化变量 37
2.3.2类型推断 38
2.3.3变量的作用域 39
2.3.4常量 41
2.4 预定义数据类型 41
2.4.1值类型和引用类型 42
2.4.2.NET类型 43
2.4.3预定义的值类型 43
2.4.4预定义的引用类型 46
2.5 程序流控制 48
2.5.1条件语句 48
2.5.2循环 51
2.5.3跳转语句 55
2.6 枚举 55
2.7 名称空间 57
2.7.1using语句 58
2.7.2名称空间的别名 59
2.8Main()方法 60
2.9 使用注释 61
2.9.1源文件中的内部注释 61
2.9.2XML文档 62
2.10C#预处理器指令 63
2.10.1#define和#undef 63
2.10.2#if、#elif、#else和#endif 64
2.10.3#warning和 # error 65
2.10.4#region和#endregion 65
2.10.5#line 65
2.10.6#pragma 65
2.11C#编程准则 66
2.11.1关于标识符的规则 66
2.11.2用法约定 67
2.12小结 70
第3章 对象和类型 71
3.1 创建及使用类 72
3.2 类和结构 72
3.3 类 73
3.3.1字段 73
3.3.2属性 74
3.3.3方法 76
3.3.4构造函数 81
3.3.5只读成员 85
3.3.6只读字段 85
3.4 匿名类型 88
3.5 结构 89
3.5.1结构是值类型 90
3.5.2结构和继承 91
3.5.3结构的构造函数 91
3.6 按值和按引用传递参数 91
3.6.1ref参数 92
3.6.2out参数 93
3.7 可空类型 94
3.8 枚举 95
3.9 部分类 97
3.10扩展方法 99
3.11Object类 100
3.12小结 101
第4章 继承 102
4.1 继承 102
4.2 继承的类型 102
4.2.1多重继承 103
4.2.2结构和类 103
4.3 实现继承 103
4.3.1虚方法 104
4.3.2多态性 106
4.3.3隐藏方法 107
4.3.4调用方法的基类版本 108
4.3.5抽象类和抽象方法 109
4.3.6密封类和密封方法 110
4.3.7派生类的构造函数 110
4.4 修饰符 112
4.4.1访问修饰符 113
4.4.2其他修饰符 113
4.5 接口 114
4.5.1定义和实现接口 115
4.5.2派生的接口 118
4.6is和as运算符 120
4.7 小结 121
第5章 托管和非托管的资源 122
5.1 资源 122
5.2 后台内存管理 123
5.2.1值数据类型 123
5.2.2引用数据类型 125
5.2.3垃圾回收 127
5.3 强引用和弱引用 129
5.4 处理非托管的资源 130
5.4.1析构函数或终结器 130
5.4.2IDisposable接口 131
5.4.3using语句 132
5.4.4实现IDisposable接口和
析构函数 133
5.4.5IDisposable和终结器的
规则 134
5.5 不安全的代码 135
5.5.1用指针直接访问内存 135
5.5.2指针示例:
PointerPlayground 143
5.5.3使用指针优化性能 147
5.6 平台调用 150
5.7 小结 154
第6章 泛型 155
6.1 泛型概述 155
6.1.1性能 156
6.1.2类型安全 157
6.1.3二进制代码的重用 157
6.1.4代码的扩展 158
6.1.5命名约定 158
6.2 创建泛型类 158
6.3 泛型类的功能 162
6.3.1默认值 163
6.3.2约束 163
6.3.3继承 166
6.3.4静态成员 167
6.4 泛型接口 167
6.4.1协变和抗变 168
6.4.2泛型接口的协变 169
6.4.3泛型接口的抗变 170
6.5 泛型结构 171
6.6 泛型方法 173
6.6.1泛型方法示例 174
6.6.2带约束的泛型方法 175
6.6.3带委托的泛型方法 176
6.6.4泛型方法规范 176
6.7 小结 178
第7章 数组和元组 179
7.1 同一类型和不同类型的多个
对象 179
7.2 简单数组 180
7.2.1数组的声明 180
7.2.2数组的初始化 180
7.2.3访问数组元素 181
7.2.4使用引用类型 182
7.3 多维数组 183
7.4 锯齿数组 184
7.5Array类 185
7.5.1创建数组 185
7.5.2复制数组 186
7.5.3排序 187
7.6 数组作为参数 190
7.6.1数组协变 190
7.6.2ArraySegment
7.7 枚举 191
7.7.1IEnumerator接口 192
7.7.2foreach语句 192
7.7.3yield语句 193
7.8 元组 197
7.9 结构比较 198
7.10小结 201
第8章 运算符和类型强制转换202
8.1 运算符和类型转换 202
8.2 运算符 203
8.2.1运算符的简化操作 204
8.2.2运算符的优先级和关联性 212
8.3 类型的安全性 213
8.3.1类型转换 213
8.3.2装箱和拆箱 217
8.4 比较对象的相等性 218
8.4.1比较引用类型的相等性 218
8.4.2比较值类型的相等性 219
8.5 运算符重载 219
8.5.1运算符的工作方式 220
8.5.2运算符重载的示例:Vector
结构 221
8.5.3比较运算符的重载 225
8.5.4可以重载的运算符 227
8.6 实现自定义的索引运算符228
8.7 实现用户定义的类型强制
转换 230
8.7.1实现用户定义的类型强制
转换 231
8.7.2多重类型强制转换 237
8.8 小结 240
第9章 委托、lambda表达式和
事件 241
9.1 引用方法 241
9.2 委托 242
9.2.1声明委托 242
9.2.2使用委托 243
9.2.3简单的委托示例 246
9.2.4Action
委托 248
9.2.5BubbleSorter示例 248
9.2.6多播委托 251
9.2.7匿名方法 254
9.3lambda表达式 255
9.3.1参数 256
9.3.2多行代码 256
9.3.3闭包 257
9.4 事件 258
9.4.1事件发布程序 258
9.4.2事件侦听器 260
9.4.3弱事件 261
9.5 小结 263
第10章 字符串和正则表达式 264
10.1System.String类 265
10.1.1构建字符串 266
10.1.2StringBuilder成员 269
10.2字符串格式 270
10.2.1字符串插值 270
10.2.2日期时间和数字的格式 272
10.2.3自定义字符串格式 274
10.3正则表达式 275
10.3.1正则表达式概述 275
10.3.2RegularExpressionsPlayaround
示例 276
10.3.3显示结果 279
10.3.4匹配、组和捕获 280
10.4小结 283
第11章 集合 284
11.1概述 284
11.2集合接口和类型 285
11.3列表 285
11.3.1创建列表 287
11.3.2只读集合 294
11.4队列 294
11.5栈 298
11.6链表 300
11.7有序列表 305
11.8字典 306
11.8.1字典初始化器 307
11.8.2键的类型 307
11.8.3字典示例 308
11.8.4Lookup类 312
11.8.5有序字典 313
11.9集 313
11.10性能 315
11.11小结 316
第12章 特殊的集合 317
12.1概述 317
12.2处理位 317
12.2.1BitArray类 318
12.2.2BitVector32结构 320
12.3可观察的集合 323
12.4不变的集合 324
12.4.1使用构建器和不变的
集合 327
12.4.2不变集合类型和接口 327
12.4.3使用LINQ和不变的
数组 328
12.5并发集合 328
12.5.1创建管道 329
12.5.2使用BlockingCollection 332
12.5.3使用Concurrent-
Dictionary 333
12.5.4完成管道 334
12.6小结 335
第13章 LINQ 337
13.1LINQ概述 337
13.1.1列表和实体 338
13.1.2LINQ查询 341
13.1.3扩展方法 342
13.1.4推迟查询的执行 343
13.2标准的查询操作符 345
13.2.1筛选 347
13.2.2用索引筛选 347
13.2.3类型筛选 348
13.2.4复合的from子句 348
13.2.5排序 349
13.2.6分组 350
13.2.7LINQ 查询中的变量 351
13.2.8对嵌套的对象分组 352
13.2.9内连接 353
13.2.10左外连接 355
13.2.11组连接 355
13.2.12集合操作 358
13.2.13合并 360
13.2.14分区 360
13.2.15聚合操作符 362
13.2.16转换操作符 363
13.2.17生成操作符 365
13.3并行LINQ 365
13.3.1并行查询 365
13.3.2分区器 366
13.3.3取消 367
13.4表达式树 367
13.5LINQ提供程序 370
13.6小结 371
第14章 错误和异常 372
14.1简介 372
14.2异常类 373
14.3捕获异常 374
14.3.1实现多个catch块 377
14.3.2在其他代码中捕获异常 380
14.3.3System.Exception属性 380
14.3.4异常过滤器 381
14.3.5重新抛出异常 382
14.3.6没有处理异常时发生的
情况 386
14.4用户定义的异常类 386
14.4.1捕获用户定义的异常 387
14.4.2抛出用户定义的异常 389
14.4.3定义用户定义的异常类 392
14.5调用者信息 394
14.6小结 396
第15章 异步编程 397
15.1异步编程的重要性 397
15.2异步模式 398
15.2.1同步调用 405
15.2.2异步模式 406
15.2.3基于事件的异步模式 407
15.2.4基于任务的异步模式 408
15.3异步编程的基础 410
15.3.1创建任务 410
15.3.2调用异步方法 411
15.3.3延续任务 411
15.3.4同步上下文 412
15.3.5使用多个异步方法 412
15.3.6转换异步模式 413
15.4错误处理 414
15.4.1异步方法的异常处理 415
15.4.2多个异步方法的异常
处理 415
15.4.3使用AggregateException
信息 416
15.5取消 417
15.5.1开始取消任务 417
15.5.2使用框架特性取消任务 417
15.5.3取消自定义任务 418
15.6小结 419
第16章 反射、元数据和动态编程420
16.1在运行期间检查代码和
动态编程 420
16.2自定义特性 421
16.2.1编写自定义特性 422
16.2.2自定义特性示例:
WhatsNewAttributes 425
16.3反射 428
16.3.1System.Type类 428
16.3.2TypeView示例 430
16.3.3Assembly类 433
16.3.4完成WhatsNewAttributes
示例 434
16.4为反射使用动态语言扩展 438
16.4.1创建Calculator库 438
16.4.2动态实例化类型 440
16.4.3用反射API调用成员 442
16.4.4使用动态类型调用成员 442
16.5dynamic类型 443
16.6DLR 448
16.7包含DLR ScriptRuntime 449
16.8DynamicObject和
ExpandoObject 451
16.8.1DynamicObject 451
16.8.2ExpandoObject 453
16.9小结 455
第Ⅱ部分 .NET Core与Windows
Runtime
第17章 Visual Studio 2015 458
17.1使用Visual Studio 2015 458
17.1.1Visual Studio的版本 461
17.1.2Visual Studio设置 461
17.2创建项目 462
17.2.1面向多个版本的.NET
Framework 463
17.2.2选择项目类型 464
17.3浏览并编写项目 469
17.3.1构建环境:CLI和
MSBuild 469
17.3.2Solution Explorer 470
17.3.3使用代码编辑器 477
17.3.4学习和理解其他窗口 481
17.3.5排列窗口 485
17.4构建项目 485
17.4.1构建、编译和生成代码 486
17.4.2调试版本和发布版本 486
17.4.3选择配置 488
17.4.4编辑配置 488
17.5调试代码 490
17.5.1设置断点 490
17.5.2使用数据提示和调试器可
视化工具 491
17.5.3Live Visual Tree 492
17.5.4监视和修改变量 493
17.5.5异常 494
17.5.6多线程 495
17.6重构工具 495
17.7体系结构工具 497
17.7.1代码地图 498
17.7.2层关系图 499
17.8分析应用程序 500
17.8.1诊断工具 500
17.8.2Concurrency Visualizer 504
17.8.3代码分析器 505
17.8.4Code Metrics 506
17.9小结 506
第18章 .NET编译器平台 507
18.1简介 507
18.2编译器管道 509
18.3语法分析 509
18.3.1使用查询节点 515
18.3.2遍历节点 517
18.4语义分析 519
18.4.1编译 520
18.4.2语义模型 521
18.5代码转换 522
18.5.1创建新树 522
18.5.2使用语法重写器 524
18.6Visual Studio Code重构 529
18.6.1VSIX包 529
18.6.2代码重构提供程序 532
18.7小结 537
第19章 测试 538
19.1概述 538
19.2使用MSTest进行单元测试 539
19.2.1使用MSTest创建单元
测试 539
19.2.2运行单元测试 541
19.2.3使用MSTest预期异常 543
19.2.4测试全部代码路径 544
19.2.5外部依赖 544
19.2.6Fakes Framework 547
19.2.7IntelliTest 549
19.3使用xUnit进行单元测试 549
19.3.1使用xUnit和.NET Core 550
19.3.2创建Fact属性 550
19.3.3创建Theory属性 551
19.3.4用dot工具运行单元
测试 552
19.3.5使用Mocking库 552
19.4UI 测试 556
19.5Web测试 559
19.5.1创建Web测试 560
19.5.2运行Web测试 562
19.5.3Web 负载测试 563
19.6小结 565
第20章 诊断和ApplicationInsights 566
20.1诊断概述 566
20.2使用EventSource跟踪 567
20.2.1EventSource的简单用法 568
20.2.2跟踪工具 570
20.2.3派生自EventSource 572
20.2.4使用注释和EventSource 574
20.2.5创建事件清单模式 576
20.2.6使用活动ID 578
20.3创建自定义侦听器 581
20.4使用Application Insights 582
20.4.1创建通用Windows应用
程序 583
20.4.2创建Application Insights
资源 583
20.4.3配置Windows应用程序 584
20.4.4使用收集器 586
20.4.5编写自定义事件 587
20.5小结 588
第21章 任务和并行编程 590
21.1概述 590
21.2Parallel类 591
21.2.1使用Parallel.For()方法
循环 591
21.2.2提前停止Parallel.For 594
21.2.3Parallel.For()的初始化 595
21.2.4使用Parallel.ForEach()
方法循环 596
21.2.5通过Parallel.Invoke()方法
调用多个方法 597
21.3任务 597
21.3.1启动任务 597
21.3.2Future——任务的结果 600
21.3.3连续的任务 601
21.3.4任务层次结构 602
21.3.5从方法中返回任务 603
21.3.6等待任务 603
21.4取消架构 604
21.4.1Parallel.For()方法的取消 604
21.4.2任务的取消 605
21.5数据流 607
21.5.1使用动作块 607
21.5.2源和目标数据块 608
21.5.3连接块 609
21.6小结 611
第22章 任务同步 612
22.1概述 613
22.2线程问题 613
22.2.1争用条件 614
22.2.2死锁 616
22.3lock语句和线程安全 618
22.4Interlocked类 623
22.5Monitor类 624
22.6SpinLock结构 625
22.7WaitHandle基类 626
22.8Mutex类 627
22.9Semaphore类 628
22.10Events类 630
22.11Barrier类 633
22.12ReaderWriterLockSlim类 636
22.13Timer类 639
22.14小结 641
第23章 文件和流 643
23.1概述 644
23.2管理文件系统 644
23.2.1检查驱动器信息 645
23.2.2使用Path类 646
23.2.3创建文件和文件夹 647
23.2.4访问和修改文件的属性 648
23.2.5创建简单的编辑器 649
23.2.6使用File执行读写操作 651
23.3枚举文件 653
23.4使用流处理文件 654
23.4.1使用文件流 655
23.4.2读取流 659
23.4.3写入流 659
23.4.4复制流 660
23.4.5随机访问流 661
23.4.6使用缓存的流 663
23.5使用读取器和写入器 663
23.5.1StreamReader类 663
23.5.2StreamWriter类 664
23.5.3读写二进制文件 665
23.6压缩文件 666
23.6.1使用压缩流 667
23.6.2压缩文件 668
23.7观察文件的更改 668
23.8使用内存映射的文件 670
23.8.1使用访问器创建内存映射
文件 671
23.8.2使用流创建内存映射
文件 673
23.9使用管道通信 675
23.9.1创建命名管道服务器 675
23.9.2创建命名管道客户端 677
23.9.3创建匿名管道 677
23.10通过Windows运行库
使用文件和流 679
23.10.1Windows应用程序
编辑器 679
23.10.2把Windows Runtime类
型映射为.NET类型 682
23.11小结 684
第24章 安全性 685
24.1概述 685
24.2验证用户信息 686
24.2.1使用Windows标识 686
24.2.2Windows Principal 687
24.2.3使用声称 688
24.3加密数据 690
24.3.1创建和验证 692
24.3.2实现安全的数据交换 694
24.3.3使用RSA和散列 697
24.3.4实现数据的保护 700
24.4资源的访问控制 703
24.5使用证书发布代码 706
24.6小结 707
第25章 网络 708
25.1网络 708
25.2HttpClient类 709
25.2.1发出异步的Get请求 709
25.2.2抛出异常 710
25.2.3传递标题 711
25.2.4访问内容 713
25.2.5用HttpMessageHandler
自定义请求 713
25.2.6使用SendAsync创建
HttpRequestMessage 714
25.2.7使用HttpClient和Windows
Runtime 715
25.3使用WebListener类 717
25.4使用实用工具类 720
25.4.1URI 721
25.4.2IPAddress 722
25.4.3IPHostEntry 723
25.4.4Dns 724
25.5使用TCP 725
25.5.1使用TCP创建客户
程序 726
25.5.2创建TCP侦听器 728
25.5.3创建TCP客户端 736
25.5.4TCP和UDP 740
25.6使用UDP 740
25.6.1建立UDP接收器 741
25.6.2创建UDP发送器 742
25.6.3使用多播 745
25.7使用套接字 745
25.7.1使用套接字创建侦听器 746
25.7.2使用NetworkStream和
套接字 749
25.7.3通过套接字使用读取器和
写入器 749
25.7.4使用套接字实现接收器 751
25.8小结 753
第26章 Composition 754
26.1概述 754
26.2Composition库的体系结构 756
26.2.1使用特性的Composition 757
26.2.2基于约定的部件注册 763
26.3定义协定 766
26.4导出部件 770
26.4.1创建部件 770
26.4.2使用部件的部件 776
26.4.3导出元数据 776
26.4.4使用元数据进行惰性
加载 778
26.5导入部件 779
26.5.1导入连接 782
26.5.2部件的惰性加载 784
26.5.3读取元数据 784
26.6小结 786
第27章 XML和JSON 787
27.1数据格式 787
27.1.1XML 788
27.1.2.NET支持的XML标准 789
27.1.3在框架中使用XML 790
27.1.4JSON 790
27.2读写流格式的XML 792
27.2.1使用XmlReader类
读取XML 793
27.2.2使用XmlWriter类 797
27.3在.NET中使用DOM 798
27.3.1使用XmlDocument类
读取 799
27.3.2遍历层次结构 799
27.3.3使用XmlDocument插入
节点 800
27.4使用XPathNavigator类 802
27.4.1XPathDocument类 802
27.4.2XPathNavigator类 803
27.4.3XPathNodeIterator类 803
27.4.4使用XPath导航XML 803
27.4.5使用XPath评估 804
27.4.6用XPath修改XML 805
27.5在XML中序列化对象 806
27.5.1序列化简单对象 807
27.5.2序列化一个对象树 809
27.5.3没有特性的序列化 811
27.6LINQ to XML 814
27.6.1XDocument对象 815
27.6.2XElement对象 816
27.6.3XNamespace对象 817
27.6.4XComment对象 818
27.6.5XAttribute对象 819
27.6.6使用LINQ查询XML
文档 820
27.6.7查询动态的XML文档 821
27.6.8转换为对象 822
27.6.9转换为XML 823
27.7JSON 824
27.7.1创建JSON 825
27.7.2转换对象 825
27.7.3序列化对象 827
27.8小结 828
第28章 本地化 829
28.1全球市场 830
28.2System.Globalization名称
空间 830
28.2.1Unicode问题 830
28.2.2区域性和区域 831
28.2.3使用区域性 835
28.2.4排序 841
28.3资源 843
28.3.1资源读取器和写入器 843
28.3.2使用资源文件生成器 844
28.3.3通过ResourceManager
使用资源文件 845
28.3.4System.Resources名称
空间 846
28.4使用WPF本地化 846
28.5使用ASP.NET Core本地化 848
28.5.1注册本地化服务 848
28.5.2注入本地化服务 849
28.5.3区域性提供程序 850
28.5.4在ASP.NET Core中使用
资源 851
28.6本地化通用Windows平台 852
28.6.1给UWP使用资源 853
28.6.2使用多语言应用程序
工具集进行本地化 854
28.7创建自定义区域性 856
28.8小结 857
第Ⅲ部分 Windows应用程序
第29章 核心XAML 860
29.1XAML的作用 860
29.2XAML概述 861
29.2.1使用WPF把元素映射到
类上 862
29.2.2通过通用Windows应用
程序把元素映射到类上 863
29.2.3使用自定义.NET类 864
29.2.4把属性用作特性 865
29.2.5把属性用作元素 866
29.2.6使用集合和XAML 867
29.3依赖属性 867
29.3.1创建依赖属性 868
29.3.2值变更回调和事件 869
29.3.3强制值回调和WPF 870
29.4路由事件 871
29.4.1用于Windows 应用程序
的路由事件 871
29.4.2WPF的冒泡和隧道 873
29.4.3用WPF实现自定义路由
事件 875
29.5附加属性 876
29.6标记扩展 879
29.6.1创建自定义标记扩展 880
29.6.2XAML定义的标记
扩展 882
29.7小结 882
第30章 样式化XAML应用程序 883
30.1样式设置 883
30.2形状 884
30.3几何图形 887
30.3.1使用段的几何图形 887
30.3.2使用PML的几何图形 888
30.3.3合并的几何图形(WPF) 889
30.4变换 889
30.4.1缩放 890
30.4.2平移 890
30.4.3旋转 891
30.4.4倾斜 891
30.4.5组合变换和复合变换 891
30.4.6使用矩阵的变换 891
30.4.7变换布局892
30.5画笔 893
30.5.1SolidColorBrush 893
30.5.2LinearGradientBrush 894
30.5.3ImageBrush 894
30.5.4WebViewBrush 894
30.5.5只用于WPF的画笔 895
30.6样式和资源 898
30.6.1样式 898
30.6.2资源 900
30.6.3从代码中访问资源 901
30.6.4动态资源(WPF) 902
30.6.5资源字典 903
30.6.6主题资源(UWP) 905
30.7模板 906
30.7.1控件模板 907
30.7.2数据模板 912
30.7.3样式化ListView 913
30.7.4ListView项的数据模板 915
30.7.5项容器的样式 915
30.7.6项面板 916
30.7.7列表视图的控件模板 917
30.8动画 918
30.8.1时间轴 919
30.8.2缓动函数 921
30.8.3关键帧动画 927
30.8.4过渡(UWP应用程序) 928
30.9可视化状态管理器 931
30.9.1用控件模板预定义状态 932
30.9.2定义自定义状态 933
30.9.3设置自定义的状态 934
30.10小结 934
第31章 模式和XAML应用程序 935
31.1使用 MVVM的原因 935
31.2定义 MVVM模式 936
31.3共享代码 938
31.3.1使用API 协定和通用
Windows平台 938
31.3.2使用共享项目 939
31.3.3使用移动库 941
31.4示例解决方案 942
31.5模型 942
31.5.1实现变更通知 943
31.5.2使用Repository模式 944
31.6视图模型 946
31.6.1命令 948
31.6.2服务和依赖注入 949
31.7视图 952
31.7.1注入视图模型 953
31.7.2用于WPF的数据绑定 953
31.7.3用于UWP的已编译数据
绑定 955
31.8使用事件传递消息 957
31.9IoC容器 959
31.10使用框架 961
31.11小结 961
第32章 Windows应用程序:
用户界面 962
32.1概述 962
32.2导航 963
32.2.1导航回初的页面 963
32.2.2重写Page类的导航 965
32.2.3在页面之间导航 965
32.2.4后退按钮 967
32.2.5Hub 969
32.2.6Pivot 971
32.2.7应用程序shell 972
32.2.8汉堡按钮 976
32.2.9分隔视图 977
32.2.10给SplitView窗格添加
内容 979
32.3布局 981
32.3.1VariableSizedWrapGrid 981
32.3.2RelativePanel 983
32.3.3自适应触发器 984
32.3.4XAML视图 988
32.3.5延迟加载 988
32.4命令 989
32.5已编译的数据绑定 992
32.5.1已编译绑定的生命周期 992
32.5.2给已编译的数据模板使用
资源 994
32.6控件 995
32.6.1TextBox 控件 995
32.6.2AutoSuggest 996
32.6.3Inking 998
32.6.4读写笔触的选择器 1001
32.7小结 1002
第33章 高级Windows应用程序 1003
33.1概述 1003
33.2应用程序的生命周期 1004
33.3应用程序的执行状态 1004
33.4导航状态 1007
33.4.1暂停应用程序 1008
33.4.2激活暂停的应用程序 1009
33.4.3测试暂停 1010
33.4.4页面状态 1011
33.5共享数据 1013
33.5.1共享源 1014
33.5.2共享目标 1017
33.6应用程序服务 1023
33.6.1创建模型 1024
33.6.2为应用程序服务连接创建
后台任务 1025
33.6.3注册应用程序服务 1026
33.6.4调用应用程序服务 1027
33.7相机 1029
33.8Geolocation和Mapcontrol 1031
33.8.1使用MapControl 1031
33.8.2使用Geolocator定位
信息 1034
33.8.3街景地图 1036
33.8.4继续请求位置信息 1037
33.9传感器 1037
33.9.1光线 1038
33.9.2罗盘 1040
33.9.3加速计 1041
33.9.4倾斜计 1042
33.9.5陀螺仪 1042
33.9.6方向 1043
33.9.7Rolling Marble示例 1044
33.10小结 1046
第34章 带WPF的Windows桌面
应用程序 1047
34.1概述 1048
34.2控件 1048
34.2.1简单控件 1048
34.2.2内容控件 1049
34.2.3带标题的内容控件 1050
34.2.4项控件 1052
34.2.5带标题的项控件 1052
34.2.6修饰 1052
34.3布局 1053
34.3.1StackPanel 1054
34.3.2WrapPanel 1054
34.3.3Canvas 1055
34.3.4DockPanel 1056
34.3.5Grid 1056
34.4触发器 1058
34.4.1属性触发器 1058
34.4.2多触发器 1059
34.4.3数据触发器 1060
34.5菜单和功能区控件 1062
34.5.1菜单控件 1062
34.5.2功能区控件 1063
34.6Commanding 1065
34.6.1定义命令 1066
34.6.2定义命令源 1067
34.6.3命令绑定 1067
34.7数据绑定 1068
34.7.1BooksDemo应用程序
内容 1069
34.7.2用XAML绑定 1070
34.7.3简单对象的绑定 1073
34.7.4更改通知 1075
34.7.5对象数据提供程序 1077
34.7.6列表绑定 1079
34.7.7主从绑定 1082
34.7.8多绑定 1082
34.7.9优先绑定 1084
34.7.10值的转换 1086
34.7.11动态添加列表项 1087
34.7.12动态添加选项卡中
的项 1088
34.7.13数据模板选择器 1089
34.7.14绑定到XML上 1091
34.7.15绑定的验证和错误
处理 1093
34.8TreeView 1101
34.9DataGrid 1106
34.9.1自定义列 1108
34.9.2行的细节 1109
34.9.3用DataGrid进行分组 1109
34.9.4实时成型 1112
34.10小结 1118
第35章 用WPF创建文档 1119
35.1简介 1119
35.2文本元素 1120
35.2.1字体 1120
35.2.2 TextEffect 1121
35.2.3内联 1123
35.2.4块 1124
35.2.5列表 1126
35.2.6表 1126
35.2.7块的锚定 1128
35.3流文档 1130
35.4固定文档 1134
35.5XPS文档 1137
35.6打印 1139
35.6.1用PrintDialog打印 1139
35.6.2打印可见元素 1140
35.7小结 1142
第36章 部署Windows应用程序 1143
36.1部署是应用程序生命周期的
一部分 1143
36.2部署的规划 1144
36.2.1部署选项 1144
36.2.2部署要求 1144
36.2.3部署.NET运行库 1145
36.3传统的部署选项 1145
36.3.1xcopy部署 1146
36.3.2Windows Installer 1146
36.4ClickOnce 1147
36.4.1ClickOnce操作 1147
36.4.2发布ClickOnce应用
程序 1147
36.4.3ClickOnce设置 1149
36.4.4ClickOnce文件的应用
程序缓存 1151
36.4.5应用程序的安装 1151
36.4.6ClickOnce部署API 1152
36.5UWP应用程序 1153
36.5.1创建应用程序包 1153
36.5.2Windows App Certification
Kit 1155
36.5.3旁加载 1156
36.6小结 1156
第Ⅳ部分 Web应用程序和服务
第37章 ADO.NET 1158
37.1ADO.NET概述 1158
37.1.1示例数据库 1159
37.1.2NuGet 包和名称空间 1160
37.2使用数据库连接 1160
37.2.1管理连接字符串 1161
37.2.2连接池 1162
37.2.3连接信息 1162
37.3命令 1162
37.3.1ExecuteNonQuery()
方法 1164
37.3.2ExecuteScalar()方法 1165
37.3.3ExecuteReader()方法 1165
37.3.4调用存储过程 1167
37.4异步数据访问 1168
37.5事务 1169
37.6小结 1173
第38章 Entity Framework Core 1174
38.1Entity Framework简史 1174
38.2Entity Framework简介 1176
38.2.1创建模型 1176
38.2.2创建上下文 1177
38.2.3写入数据库 1178
38.2.4读取数据库 1179
38.2.5更新记录 1180
38.2.6删除记录 1180
38.3使用依赖注入 1181
38.4创建模型 1184
38.4.1创建关系 1184
38.4.2用.NET CLI迁移 1185
38.4.3用MSBuild迁移 1187
38.4.4创建数据库 1188
38.4.5数据注释 1189
38.4.6流利API 1190
38.4.7在数据库中搭建模型 1191
38.5使用对象状态 1191
38.5.1用关系添加对象 1192
38.5.2对象的跟踪 1193
38.5.3更新对象 1194
38.5.4更新未跟踪的对象 1195
38.6冲突的处理 1196
38.6.1后一个更改获胜 1196
38.6.2个更改获胜 1198
38.7使用事务 1202
38.7.1使用隐式的事务 1202
38.7.2创建显式的事务 1204
38.8小结 1206
第39章 Windows服务 1207
39.1Windows服务 1207
39.2Windows服务的体系结构 1209
39.2.1服务程序 1209
39.2.2服务控制程序 1210
39.2.3服务配置程序 1210
39.2.4Windows服务的类 1211
39.3创建Windows服务程序 1211
39.3.1创建服务的核心功能 1211