.NET Core實戰——手把手教你掌握380個精彩案例

.NET Core實戰——手把手教你掌握380個精彩案例

《.NET Core實戰——手把手教你掌握380個精彩案例》是2019年9月清華大學出版社出版的圖書,作者是周家安。

基本介紹

  • 書名:.NET Core實戰——手把手教你掌握380個精彩案例
  • 作者:周家安
  • ISBN:9787302526506
  • 定價:99元
  • 出版社:清華大學出版社
  • 出版時間:2019.09
內容簡介,圖書目錄,

內容簡介

本書通過380個獨立且簡單的實例全面介紹了.NET Core的核心開發技術。全書分為三篇: 第一篇基礎知識(第1~7章),內容包括開發環境與應用程式項目管理、C#語言基礎、面向對象編程、數學運算與字元串處理、泛型與集合、LINQ與動態類型; 第二篇技術進階(第8~13章),內容包括檔案與I/O、序列化、異步與並行、網路編程、反射與Composition、加密算法; 第三篇ASP.NET Core(第14~17章),內容包括套用啟動、依賴注入與中間件、MVC與Web API、套用配置與資料庫局局汽訪問。
為了便於讀者學習,本書拘霉頁碑提供了所有實例的配套原始碼,在開發環境中運行,能直觀地看到每個實例的運行效果。本書適合作為普通高校.NET Core技術相關課程的教學用書,也可以作為相關培訓機構的培訓教材,還可作為從事.NET Core技術開發的IT從業者的參考用書。

圖書目錄

叢書序(沈向洋)1
前言3
第一篇基 礎 知 識
第1章搭建開發與測試環境
1.1在Windows上安裝開發環境
實例1安裝Visual Studio
實例2修復Visual Studio
1.2在Linux作業系統中配置測試環境
實例3啟用Windows上的Linux子系統
實例4設定root密碼乃蒸
實例5在Linux系統中安裝.NET Core SDK
實例6在Linux系統中安裝.NET Core運行時
第2章應用程式項目管理
2.1.NET Core命令行工具的使用
實例7使用命令行工具創建.NET Core項目
實例8定義新項目的名稱與存放位置
實例9編譯應用程式項目
實例10編譯項目的Release版本
實例11創建解決方案檔案
實例12枚舉或刪除解決方案中的項目
實例13運行應用程式
2.2Visual Studio開發環境
實例14使用Visual Studio創建項目
實例15在Visual Studio中運行項目
實例16顯示代碼行號
實例17在C# Interactive視窗中做代碼實驗
實例18在解決方案中添加和移除項目
實例19添加膠閥估NuGet包引用
實例20清除NuGet包快取
實例21保存視窗布局
實例22給代碼打書籤
2.3代碼注釋
實例23單行注釋
實例24多行注釋
實例25文檔注釋
2.4發布.NET Core套用項目
實例26在Visual Studio中發布.NET Core套用
實例27使用Visual Studio發布可獨立運行的項目
實籃墓應例28使用dotnet命令行工具發布“自包含”項目
第3章C#語言基礎
3.1命名空間
實例29使用namespace關鍵字
實例30嵌套命名空間
實例31引入命名空間
實例32在命名空間內部引入其他命名空間
實例33使用全局命名空間
實例34為引入的命名空間設定別名
實例35使用using static指令
3.2變數與常量
實例36一次性聲明多個變數
實例37讓編譯器自動推斷變數的類型
實例38使用常量
實例39獲取變數的記憶體地址
實例40輸出變數的名稱
實例41為變數分配默認值
3.3程式入口點
實例42獲取命令行參數
實例43處理多個入口點
3.4流程控制
實例44奇數還是偶數
實例45使用for循環輸出文本
實例46生成由字元組成的圖案
實例47死循環的處理方法
實例48退出循環的方法
實例49輸出20以內能被3整除的正主陵斷整數
實例50做一道選鞏嫌兵禁擇題
實例51switch語句的類型匹配
實例52在case語句中使用when子句
實例53代碼跳轉
第4章面向對象編程
4.1類與結構
實例54聲明公共類
實例55為結構定義構造函式
實例56構造函式的相互調用
實例57靜態構造函式
實例58驗證屬性值的有效性
實例59初始化唯讀欄位
實例60重載方法
實例61類實例傳遞給方法後為什麼沒有被更改
實例62輸出參數
實例63可變個數的方法參數
實例64使用按引用傳遞的返回值
實例65按參數名稱來傳值
實例66可選參數
實例67在聲明時初始化屬性
4.2委託與事件
實例68委託實例如何綁定方法
實例69綁定多個方法
實例70匿名方法
實例71封裝事件
實例72框架提供的委託類型
實例73將方法作為參數進行傳遞
實例74使用Lambda表達式動態產生數據
4.3繼承與多態
實例75調用基類的構造函式
實例76重寫基類的成員
實例77徹底替換基類的成員
實例78實現多個接口
實例79實現接口的結構
實例80隱藏構造函式
實例81到底調用了誰
實例82析構函式
實例83實現IDisposable接口
實例84顯式實現接口
實例85阻止類被繼承
實例86嵌套類
實例87匿名類型
4.4枚舉
實例88聲明枚舉類型
實例89指定枚舉的基礎類型
實例90常量的標誌位運算
實例91自動產生的常量值
實例92獲取枚舉中常量的名稱
實例93檢查枚舉實例中是否包含某個標誌位
4.5特性
實例94自定義特性類
實例95向特性類的構造函式傳遞參數
實例96在同一對象上套用多個特性實例
實例97在運行階段檢索特性實例
實例98方法的返回值如何套用特性
4.6運算符
實例99計算一個整數的階乘
實例100按位平移
實例101是“大”還是“小”
實例102typeof運算符的作用
實例103使用“+”運算符將兩個對象的屬性值相加
實例104對null進行判斷
4.7類型轉換
實例105強制轉換
實例106將int數值隱式轉換為double數值
實例107輸出整數的二進制表示形式
實例108將位元組數組轉換為字元串
實例109重寫ToString方法
實例110將整數轉換為十六進制字元串
實例111自定義隱式轉換
4.8可以為null的值類型
實例112訪問可以為null的值類型
實例113為NullableT實例分配默認值
第5章數學運算與字元串處理
5.1簡單數學計算
實例114求一組整數中的最大值和最小值
實例115計算平均值
實例116計算一個數值的絕對值
實例117計算一個矩形序列的周長總和
實例118求某個角度的正弦值
實例119求某個數值的立方
實例120計算矩形的對角線長度
實例121處理超大整數
5.2日期/時間換算
實例122今天是星期幾
實例123獲取指定日期的農曆日期
實例124一天內總共有多少秒
實例125日期的加/減運算
實例126從日期字元串中產生DateTime實例
5.3常用的字元串處理
實例127使用Concat方法拼接字元串
實例128使用“+”運算符拼接字元串
實例129字元串的包含關係
實例130字母的大小寫轉換
實例131使用分隔設定連線字元串
實例132查找以“ay”結尾的單詞
實例133依據指定的分隔設定來拆分字元串
實例134替換字元串
實例135反轉字元串
實例136插入與刪除字元
實例137填充剩餘“空白”
實例138判斷字元是否為數字
實例139截取字元串
實例140使用StringBuilder組裝字元串
實例141字元串查找
實例142比較字元串時忽略大小寫
實例143“@”符號在字元串中的用途
實例144處理字元串中出現的雙引號
5.4格式控制符
實例145輸出百分比
實例146輸出當前語言中的貨幣格式
實例147輸出多個幣種格式
實例148數字的兩種常用格式
實例149使用字元串內插
實例150長日期與短日期
實例151自定義日期和時間格式
實例152自定義小數位數
5.5從字元串到其他類型的轉換
實例153從二進制字元串產生int實例
實例154Parse與TryParse方法
實例155對字元串進行UTF8編碼
實例156字元串的HTML編碼
實例157字元串隱式轉換為自定義類
第6章泛型與集合
6.1泛型
實例158使用泛型參數
實例159實現泛型接口
實例160限制泛型參數只能使用值類型
實例161泛型方法
實例162將泛型參數限制為枚舉類型
實例163泛型參數的輸入與輸出
實例164在委託類型中使用泛型
實例165將抽象類作為類型約束
6.2數組
實例166四種方式初始化數組實例
實例167創建二維數組
實例168使用簡化語法初始化多維數組
實例169使用Array類創建數組實例
實例170SetValue方法與GetValue方法
實例171獲取某個維度的元素個數
實例172動態調整數組的大小
實例173反轉數組
實例174查找符合條件的元素
實例175查找符合條件的元素的索引
實例176確定數組中元素的存在性
實例177複製數組中的元素
6.3集合
實例178將數字進行降序排列
實例179初始化ListT集合
實例180實現IEnumerator接口
實例181IEnumerable接口與foreach循環
實例182IEnumerableT與foreach循環
實例183IEnumerable接口與yield return語句
實例184無重複元素的集合
實例185雙向鍊表
實例186自定義相等比較
實例187清空集合中的所有元素
實例188判斷字典集合中是否存在某個鍵
實例189定義索引器
實例190帶多個參數的索引器
實例191使用泛型的棧佇列
實例192自動排序的字典集合
實例193自定義SortedDictionary集合的排序規則
實例194“先進先出”佇列
實例195自定義ToReadOnlyDictionary方法
實例196初始化字典集合的方法
實例197ArrayList的使用
實例198使用SpanT提升處理字元串的性能
實例199多個Task同時操作ConcurrentBag集合
實例200跨執行緒訪問BlockingCollection集合
6.4元組
實例201Tuple類的使用
實例202推薦使用的元組——ValueTuple
實例203C#語法中的ValueTuple
實例204重命名元組的欄位
實例205將元組解構為變數
實例206解構自定義類型
實例207將元組作為返回值
第7章LINQ與動態類型
7.1常見的擴展方法
實例208求最大值與最小值
實例209求工序列表中最長的加工周期
實例210計算字元串的總長度
實例211合併兩個序列
實例212有多少個矩形的面積超過100cm2
實例213按員工年齡進行降序排列
實例214去掉重複的元素
實例215篩選出兩個序列中的差異元素
實例216處理First方法拋出的異常
實例217當序列中有且僅有一個元素時
實例218篩選出手機號以135或136開頭的聯繫人信息
實例219將對象轉換為字典集合
實例220將原始序列進行分組
7.2LINQ語法
實例221篩選能被5整除的整數
實例222求序列中元素的平方根並按降序排列
實例223select子句返回的內容
實例224按員工所屬部門分組
實例225“內聯”查詢
實例226處理查詢中的異常
實例227DefaultIfEmpty方法的作用
實例228使用LINQ將序列轉換為XML文檔
實例229將分組後的序列重新排序
實例230將字典集合轉換為字元串序列
實例231修改XML元素的內容
實例232使用並行LINQ
實例233將XML轉換為元組
實例234生成帶命名空間的XML文檔
實例235添加命名空間前綴
7.3動態類型
實例236通過ExpandoObject類創建動態實例
實例237以字典形式訪問ExpandoObject
實例238自定義的動態類型
實例239在自定義動態類型中直接定義成員
實例240模擬委託實例的調用
第二篇技 術 進 階
第8章檔案與I/O
8.1與檔案
實例241創建與檔案
實例242修改檔案的創建時間
實例243使用FileInfo類來創建檔案
實例244判斷是否已經存在
實例245向檔案追加文本
實例246覆寫檔案內容
實例247使用FileInfo類刪除檔案
實例248以行的形式寫入文本
實例249重命名
實例250通過ReadAllLines方法讀取檔案中的所有行
實例251依據檔案的大小排序
實例252枚舉磁碟驅動器
8.2流
實例253向記憶體流寫入內容
實例254將記憶體流中的內容轉換為位元組數組
實例255從記憶體流中讀取內容
實例256使用StreamWriter類將文本寫入檔案
實例257使用StreamReader類讀取文本檔案
實例258調用Seek方法重新設定流的當前位置
實例259通過Position屬性更改流的當前位置
8.3壓縮與解壓縮
實例260使用DeflateStream類壓縮檔案
實例261創建Zip壓縮文檔
實例262使用GZipStream類壓縮檔案
8.4記憶體映射檔案
實例263讀寫記憶體映射檔案
實例264將記憶體映射檔案寫入磁碟檔案
8.5命名管道
實例265實現本地進程之間的通信
實例266單向管道通信
第9章序列化
9.1簡單序列化方案
實例267二進制序列化
實例268使用DataContractSerializer類進行序列化
實例269將類型實例序列化為JSON格式
實例270在序列化時忽略某些欄位
9.2XML序列化
實例271XmlSerializer與XML序列化
實例272自定義封裝集合類型成員的XML元素名稱
實例273自定義XML元素的名稱
實例274將類型成員序列化為XML特性
實例275自定義XML命名空間
實例276自定義數組類型成員的XML元素
9.3數據協定
實例277數據協定的簡單定義
實例278自定義協定的名稱
實例279不同的類型使用相同的數據協定
實例280將數據協定序列化為JSON格式
實例281序列化數據協定時忽略某個成員
實例282改變數據協定成員的序列化順序
實例283保留實例引用
第10章異步與並行
10.1執行緒
實例284Sleep方法的妙用
實例285創建新執行緒
實例286啟動新執行緒並傳遞參數
實例287等待執行緒信號——ManualResetEvent
實例288等待執行緒信號——AutoResetEvent
實例289多個執行緒同時寫一個檔案
實例290使用執行緒鎖
10.2並行任務
實例291啟動Task的三種方法
實例292帶返回值的Task
實例293傳遞狀態數據
實例294串聯並行任務
實例295使用Parallel類執行並行操作
10.3異步等待語法
實例296聲明異步方法
實例297在Main方法中使用異步等待
實例298為每個執行緒單獨分配變數值
實例299保留異步上下文中的本地變數值
實例300取消並行任務
第11章網路編程
11.1Socket通信
實例301簡單的TCP通信程式
實例302TcpListener與TcpClient
實例303使用UdpClient類開發簡單的聊天程式
11.2HTTP編程
實例304從Web伺服器上下載圖片
實例305使用HttpClient類向Web伺服器提交數據
第12章反射與Composition
12.1反射技術
實例306獲取程式集中的類型列表
實例307獲取指定類型的成員列表
實例308獲取方法的參數信息
實例309通過反射調用構造函式
實例310通過反射調用靜態方法
實例311用Activator類創建類型實例
實例312檢測類型上所套用的自定義Attribute
12.2Composition
實例313安裝NuGet包——System.Composition
實例314導出類型
實例315通過協定來約束導出類型
實例316導入多個類型
實例317導出元數據
實例318使用自定義類型來接收導入的元數據
實例319封裝元數據
實例320用抽象類來充當協定類型
第13章加密算法
13.1單向加密
實例321計算輸入字元串的MD5值
實例322使用SHA1算法校驗檔案
13.2雙向加密
實例323使用AES算法加密和解密文本
實例324不需要初始向量的AES加密
實例325用RSA算法加密和解密數據
第三篇ASP.NET Core
第14章套用啟動
14.1Web主機配置
實例326使用默認配置創建Web主機
實例327配置Web伺服器的URL
實例328使用Kestrel伺服器組件
實例329配置Web項目的調試方案
14.2Startup
實例330基於方法約定的Startup類
實例331使用IStartup接口定義Startup類
實例332無Startup啟動應用程式
14.3啟動環境
實例333使用非預定義環境
實例334使Startup類匹配啟動環境
第15章依賴注入與中間件
15.1服務
實例335枚舉應用程式中已添加的服務
實例336編寫服務類型
實例337理解服務的生命周期
15.2依賴注入
實例338實現SHA1計算服務
實例339Startup.Configure方法的依賴注入
實例340臨時訪問服務
15.3中間件
實例341以委託形式定義中間件
實例342定義中間件類
實例343帶參數的中間件
實例344IMiddleware接口的用途
實例345讓HTTP管道“短路”
實例346中間件的分支映射
第16章MVC與Web API
16.1Razor Web頁面套用
實例347自定義Razor頁的根
實例348Razor頁面與頁面模型關聯
實例349Razor Page套用的路由映射
實例350通過@page指令設定Razor頁面的URL路由
實例351自定義頁面的handler方法
16.2MVC(模型框架視圖)
實例352為全局路由欄位分配默認值
實例353局部的URL路由
實例354自定義視圖檔案的查找位置
實例355根據URL查詢參數返回不同的視圖
實例356自定義的控制器類
實例357阻止控制器中的方法被公開為Action方法
實例358重命名Action方法
實例359使用布局頁
實例360_ViewStart視圖與_ViewImports視圖
實例361向視圖傳遞模型對象
實例362在控制器中接收服務列表的注入
實例363使用IFormCollection組件來提取form表單數據
實例364在Web API中直接提取上傳的檔案
實例365用部分視圖來顯示當前日期
實例366使用視圖組件
實例367在視圖中接收依賴注入
16.3靜態檔案與瀏覽
實例368訪問靜態檔案
實例369開啟瀏覽功能
實例370檔案服務
第17章套用配置與資料庫訪問
17.1配置應用程式
實例371自定義環境變數的命名前綴
實例372使用JSON檔案進行配置
實例373自定義命令行參數映射
實例374使用記憶體中的配置源
17.2選項類
實例375選項類的使用方法
實例376使用JSON檔案來配置選項類
17.3實體框架
實例377為實體模型設定主鍵
實例378遷移實體並生成資料庫
實例380在應用程式運行期間創建SQLite資料庫
第3章C#語言基礎
3.1命名空間
實例29使用namespace關鍵字
實例30嵌套命名空間
實例31引入命名空間
實例32在命名空間內部引入其他命名空間
實例33使用全局命名空間
實例34為引入的命名空間設定別名
實例35使用using static指令
3.2變數與常量
實例36一次性聲明多個變數
實例37讓編譯器自動推斷變數的類型
實例38使用常量
實例39獲取變數的記憶體地址
實例40輸出變數的名稱
實例41為變數分配默認值
3.3程式入口點
實例42獲取命令行參數
實例43處理多個入口點
3.4流程控制
實例44奇數還是偶數
實例45使用for循環輸出文本
實例46生成由字元組成的圖案
實例47死循環的處理方法
實例48退出循環的方法
實例49輸出20以內能被3整除的正整數
實例50做一道選擇題
實例51switch語句的類型匹配
實例52在case語句中使用when子句
實例53代碼跳轉
第4章面向對象編程
4.1類與結構
實例54聲明公共類
實例55為結構定義構造函式
實例56構造函式的相互調用
實例57靜態構造函式
實例58驗證屬性值的有效性
實例59初始化唯讀欄位
實例60重載方法
實例61類實例傳遞給方法後為什麼沒有被更改
實例62輸出參數
實例63可變個數的方法參數
實例64使用按引用傳遞的返回值
實例65按參數名稱來傳值
實例66可選參數
實例67在聲明時初始化屬性
4.2委託與事件
實例68委託實例如何綁定方法
實例69綁定多個方法
實例70匿名方法
實例71封裝事件
實例72框架提供的委託類型
實例73將方法作為參數進行傳遞
實例74使用Lambda表達式動態產生數據
4.3繼承與多態
實例75調用基類的構造函式
實例76重寫基類的成員
實例77徹底替換基類的成員
實例78實現多個接口
實例79實現接口的結構
實例80隱藏構造函式
實例81到底調用了誰
實例82析構函式
實例83實現IDisposable接口
實例84顯式實現接口
實例85阻止類被繼承
實例86嵌套類
實例87匿名類型
4.4枚舉
實例88聲明枚舉類型
實例89指定枚舉的基礎類型
實例90常量的標誌位運算
實例91自動產生的常量值
實例92獲取枚舉中常量的名稱
實例93檢查枚舉實例中是否包含某個標誌位
4.5特性
實例94自定義特性類
實例95向特性類的構造函式傳遞參數
實例96在同一對象上套用多個特性實例
實例97在運行階段檢索特性實例
實例98方法的返回值如何套用特性
4.6運算符
實例99計算一個整數的階乘
實例100按位平移
實例101是“大”還是“小”
實例102typeof運算符的作用
實例103使用“+”運算符將兩個對象的屬性值相加
實例104對null進行判斷
4.7類型轉換
實例105強制轉換
實例106將int數值隱式轉換為double數值
實例107輸出整數的二進制表示形式
實例108將位元組數組轉換為字元串
實例109重寫ToString方法
實例110將整數轉換為十六進制字元串
實例111自定義隱式轉換
4.8可以為null的值類型
實例112訪問可以為null的值類型
實例113為NullableT實例分配默認值
第5章數學運算與字元串處理
5.1簡單數學計算
實例114求一組整數中的最大值和最小值
實例115計算平均值
實例116計算一個數值的絕對值
實例117計算一個矩形序列的周長總和
實例118求某個角度的正弦值
實例119求某個數值的立方
實例120計算矩形的對角線長度
實例121處理超大整數
5.2日期/時間換算
實例122今天是星期幾
實例123獲取指定日期的農曆日期
實例124一天內總共有多少秒
實例125日期的加/減運算
實例126從日期字元串中產生DateTime實例
5.3常用的字元串處理
實例127使用Concat方法拼接字元串
實例128使用“+”運算符拼接字元串
實例129字元串的包含關係
實例130字母的大小寫轉換
實例131使用分隔設定連線字元串
實例132查找以“ay”結尾的單詞
實例133依據指定的分隔設定來拆分字元串
實例134替換字元串
實例135反轉字元串
實例136插入與刪除字元
實例137填充剩餘“空白”
實例138判斷字元是否為數字
實例139截取字元串
實例140使用StringBuilder組裝字元串
實例141字元串查找
實例142比較字元串時忽略大小寫
實例143“@”符號在字元串中的用途
實例144處理字元串中出現的雙引號
5.4格式控制符
實例145輸出百分比
實例146輸出當前語言中的貨幣格式
實例147輸出多個幣種格式
實例148數字的兩種常用格式
實例149使用字元串內插
實例150長日期與短日期
實例151自定義日期和時間格式
實例152自定義小數位數
5.5從字元串到其他類型的轉換
實例153從二進制字元串產生int實例
實例154Parse與TryParse方法
實例155對字元串進行UTF8編碼
實例156字元串的HTML編碼
實例157字元串隱式轉換為自定義類
第6章泛型與集合
6.1泛型
實例158使用泛型參數
實例159實現泛型接口
實例160限制泛型參數只能使用值類型
實例161泛型方法
實例162將泛型參數限制為枚舉類型
實例163泛型參數的輸入與輸出
實例164在委託類型中使用泛型
實例165將抽象類作為類型約束
6.2數組
實例166四種方式初始化數組實例
實例167創建二維數組
實例168使用簡化語法初始化多維數組
實例169使用Array類創建數組實例
實例170SetValue方法與GetValue方法
實例171獲取某個維度的元素個數
實例172動態調整數組的大小
實例173反轉數組
實例174查找符合條件的元素
實例175查找符合條件的元素的索引
實例176確定數組中元素的存在性
實例177複製數組中的元素
6.3集合
實例178將數字進行降序排列
實例179初始化ListT集合
實例180實現IEnumerator接口
實例181IEnumerable接口與foreach循環
實例182IEnumerableT與foreach循環
實例183IEnumerable接口與yield return語句
實例184無重複元素的集合
實例185雙向鍊表
實例186自定義相等比較
實例187清空集合中的所有元素
實例188判斷字典集合中是否存在某個鍵
實例189定義索引器
實例190帶多個參數的索引器
實例191使用泛型的棧佇列
實例192自動排序的字典集合
實例193自定義SortedDictionary集合的排序規則
實例194“先進先出”佇列
實例195自定義ToReadOnlyDictionary方法
實例196初始化字典集合的方法
實例197ArrayList的使用
實例198使用SpanT提升處理字元串的性能
實例199多個Task同時操作ConcurrentBag集合
實例200跨執行緒訪問BlockingCollection集合
6.4元組
實例201Tuple類的使用
實例202推薦使用的元組——ValueTuple
實例203C#語法中的ValueTuple
實例204重命名元組的欄位
實例205將元組解構為變數
實例206解構自定義類型
實例207將元組作為返回值
第7章LINQ與動態類型
7.1常見的擴展方法
實例208求最大值與最小值
實例209求工序列表中最長的加工周期
實例210計算字元串的總長度
實例211合併兩個序列
實例212有多少個矩形的面積超過100cm2
實例213按員工年齡進行降序排列
實例214去掉重複的元素
實例215篩選出兩個序列中的差異元素
實例216處理First方法拋出的異常
實例217當序列中有且僅有一個元素時
實例218篩選出手機號以135或136開頭的聯繫人信息
實例219將對象轉換為字典集合
實例220將原始序列進行分組
7.2LINQ語法
實例221篩選能被5整除的整數
實例222求序列中元素的平方根並按降序排列
實例223select子句返回的內容
實例224按員工所屬部門分組
實例225“內聯”查詢
實例226處理查詢中的異常
實例227DefaultIfEmpty方法的作用
實例228使用LINQ將序列轉換為XML文檔
實例229將分組後的序列重新排序
實例230將字典集合轉換為字元串序列
實例231修改XML元素的內容
實例232使用並行LINQ
實例233將XML轉換為元組
實例234生成帶命名空間的XML文檔
實例235添加命名空間前綴
7.3動態類型
實例236通過ExpandoObject類創建動態實例
實例237以字典形式訪問ExpandoObject
實例238自定義的動態類型
實例239在自定義動態類型中直接定義成員
實例240模擬委託實例的調用
第二篇技 術 進 階
第8章檔案與I/O
8.1與檔案
實例241創建與檔案
實例242修改檔案的創建時間
實例243使用FileInfo類來創建檔案
實例244判斷是否已經存在
實例245向檔案追加文本
實例246覆寫檔案內容
實例247使用FileInfo類刪除檔案
實例248以行的形式寫入文本
實例249重命名
實例250通過ReadAllLines方法讀取檔案中的所有行
實例251依據檔案的大小排序
實例252枚舉磁碟驅動器
8.2流
實例253向記憶體流寫入內容
實例254將記憶體流中的內容轉換為位元組數組
實例255從記憶體流中讀取內容
實例256使用StreamWriter類將文本寫入檔案
實例257使用StreamReader類讀取文本檔案
實例258調用Seek方法重新設定流的當前位置
實例259通過Position屬性更改流的當前位置
8.3壓縮與解壓縮
實例260使用DeflateStream類壓縮檔案
實例261創建Zip壓縮文檔
實例262使用GZipStream類壓縮檔案
8.4記憶體映射檔案
實例263讀寫記憶體映射檔案
實例264將記憶體映射檔案寫入磁碟檔案
8.5命名管道
實例265實現本地進程之間的通信
實例266單向管道通信
第9章序列化
9.1簡單序列化方案
實例267二進制序列化
實例268使用DataContractSerializer類進行序列化
實例269將類型實例序列化為JSON格式
實例270在序列化時忽略某些欄位
9.2XML序列化
實例271XmlSerializer與XML序列化
實例272自定義封裝集合類型成員的XML元素名稱
實例273自定義XML元素的名稱
實例274將類型成員序列化為XML特性
實例275自定義XML命名空間
實例276自定義數組類型成員的XML元素
9.3數據協定
實例277數據協定的簡單定義
實例278自定義協定的名稱
實例279不同的類型使用相同的數據協定
實例280將數據協定序列化為JSON格式
實例281序列化數據協定時忽略某個成員
實例282改變數據協定成員的序列化順序
實例283保留實例引用
第10章異步與並行
10.1執行緒
實例284Sleep方法的妙用
實例285創建新執行緒
實例286啟動新執行緒並傳遞參數
實例287等待執行緒信號——ManualResetEvent
實例288等待執行緒信號——AutoResetEvent
實例289多個執行緒同時寫一個檔案
實例290使用執行緒鎖
10.2並行任務
實例291啟動Task的三種方法
實例292帶返回值的Task
實例293傳遞狀態數據
實例294串聯並行任務
實例295使用Parallel類執行並行操作
10.3異步等待語法
實例296聲明異步方法
實例297在Main方法中使用異步等待
實例298為每個執行緒單獨分配變數值
實例299保留異步上下文中的本地變數值
實例300取消並行任務
第11章網路編程
11.1Socket通信
實例301簡單的TCP通信程式
實例302TcpListener與TcpClient
實例303使用UdpClient類開發簡單的聊天程式
11.2HTTP編程
實例304從Web伺服器上下載圖片
實例305使用HttpClient類向Web伺服器提交數據
第12章反射與Composition
12.1反射技術
實例306獲取程式集中的類型列表
實例307獲取指定類型的成員列表
實例308獲取方法的參數信息
實例309通過反射調用構造函式
實例310通過反射調用靜態方法
實例311用Activator類創建類型實例
實例312檢測類型上所套用的自定義Attribute
12.2Composition
實例313安裝NuGet包——System.Composition
實例314導出類型
實例315通過協定來約束導出類型
實例316導入多個類型
實例317導出元數據
實例318使用自定義類型來接收導入的元數據
實例319封裝元數據
實例320用抽象類來充當協定類型
第13章加密算法
13.1單向加密
實例321計算輸入字元串的MD5值
實例322使用SHA1算法校驗檔案
13.2雙向加密
實例323使用AES算法加密和解密文本
實例324不需要初始向量的AES加密
實例325用RSA算法加密和解密數據
第三篇ASP.NET Core
第14章套用啟動
14.1Web主機配置
實例326使用默認配置創建Web主機
實例327配置Web伺服器的URL
實例328使用Kestrel伺服器組件
實例329配置Web項目的調試方案
14.2Startup
實例330基於方法約定的Startup類
實例331使用IStartup接口定義Startup類
實例332無Startup啟動應用程式
14.3啟動環境
實例333使用非預定義環境
實例334使Startup類匹配啟動環境
第15章依賴注入與中間件
15.1服務
實例335枚舉應用程式中已添加的服務
實例336編寫服務類型
實例337理解服務的生命周期
15.2依賴注入
實例338實現SHA1計算服務
實例339Startup.Configure方法的依賴注入
實例340臨時訪問服務
15.3中間件
實例341以委託形式定義中間件
實例342定義中間件類
實例343帶參數的中間件
實例344IMiddleware接口的用途
實例345讓HTTP管道“短路”
實例346中間件的分支映射
第16章MVC與Web API
16.1Razor Web頁面套用
實例347自定義Razor頁的根
實例348Razor頁面與頁面模型關聯
實例349Razor Page套用的路由映射
實例350通過@page指令設定Razor頁面的URL路由
實例351自定義頁面的handler方法
16.2MVC(模型框架視圖)
實例352為全局路由欄位分配默認值
實例353局部的URL路由
實例354自定義視圖檔案的查找位置
實例355根據URL查詢參數返回不同的視圖
實例356自定義的控制器類
實例357阻止控制器中的方法被公開為Action方法
實例358重命名Action方法
實例359使用布局頁
實例360_ViewStart視圖與_ViewImports視圖
實例361向視圖傳遞模型對象
實例362在控制器中接收服務列表的注入
實例363使用IFormCollection組件來提取form表單數據
實例364在Web API中直接提取上傳的檔案
實例365用部分視圖來顯示當前日期
實例366使用視圖組件
實例367在視圖中接收依賴注入
16.3靜態檔案與瀏覽
實例368訪問靜態檔案
實例369開啟瀏覽功能
實例370檔案服務
第17章套用配置與資料庫訪問
17.1配置應用程式
實例371自定義環境變數的命名前綴
實例372使用JSON檔案進行配置
實例373自定義命令行參數映射
實例374使用記憶體中的配置源
17.2選項類
實例375選項類的使用方法
實例376使用JSON檔案來配置選項類
17.3實體框架
實例377為實體模型設定主鍵
實例378遷移實體並生成資料庫
實例380在應用程式運行期間創建SQLite資料庫

相關詞條

熱門詞條

聯絡我們