Effective C# 原則 44:建立應用程式專屬例外類別 (下)
捕捉例外型別優於解析堆疊框架 根據 e.TargetSite.Name 切換處理邏輯極其脆弱:重命名方法、移動程式碼、更深層堆疊皆會破壞。應建立專屬例外類別,讓
《Effective C# 精髓》摘選 (1)
讀書筆記:前五條款重點 Item 1: 永遠用屬性取代公開資料成員 屬性是類別對外介面,資料成員是內部實現。暴露內部實現不利未來變更。 Item 2: 優先
Effective C# 原則 43:請勿濫用反射 (上)
反射的代價 二進位組件意味著晚期繫結與反射。反射雖能動態擴充功能,但繞過 C# 型別安全:參數與回傳值皆為 object,需執行期驗證,極易出錯。 反射三大功
Effective C# 原則 43:請勿濫用反射 (下)
反射的三大用途與風險 建立實例:依賴預設建構函式,移除建構函式編譯不報錯,執行期才失敗。工廠函式編譯期即可檢查。 呼叫成員方法:需字串比對方法名、檢查參數清單
Effective C# 原則 42:使用屬性簡化反射 (上)
反射與屬性的結合 建立動態可配置系統時,為自有型別、方法、屬性定義自訂屬性,可標示執行意圖、簡化反射查找、減少型別錯誤。 外掛架構需求 主程式需掃描 Addi
Effective C# 原則 42:使用屬性簡化反射 (中)
定義 DynamicMenu 屬性類別 僅套用於屬性(AttributeTargets.Property),建構子接收選單文字與父選單文字,提供可讀寫屬性:
Effective C# 原則 42:使用屬性簡化反射 (下)
建立命令處理器範例 以 [CommandHandler] 標記類別,[DynamicMenu(命令文字, 父選單)] 標記屬性: [CommandHandle
Effective C# 原則 41:選擇 DataSet 而非自訂資料結構 (中)
CollectionBase 支援 IList 可繫結,但空集合會失效 資料繫結透過反射讀取第一個元素決定欄位。集合為空時無法運作。解決: 不允許空集合(簡單
Effective C# 原則 41:選擇 DataSet 而非自訂資料結構 (下)
自訂集合實作完整繫結功能的代價 為支援 IEditableObject(交易)、IDataErrorInfo(驗證),需在 AddressRecord 維護永久
Effective C# 原則 37:善用標準配置機制(上)
關於「哪種集合最好?」的答案永遠是「視情況而定」。不同集合在效能與行為上有不同優化。.NET Framework 提供了豐富的集合類型:鏈結清單、陣列、佇列、堆
Effective C# 原則 40:根據需求選擇集合 (上)
沒有銀彈:視情況選擇集合 .NET 提供陣列、類陣列集合、雜湊集合等 20 多種實作 ICollection 的類別。選擇依據:操作類型、效能目標、擴充彈性(參
Effective C# 原則 40:根據需求選擇集合 (中)
多維陣列與交錯陣列的 foreach 差異 交錯陣列每層 foreach 產生邊界檢查程式碼;多維陣列單一 foreach 遍歷所有元素,JIT 會快取邊界並優
Effective C# 原則 40:根據需求選擇集合 (下)
C# 1.x 時代的型別安全集合 C# 1.x 集合皆儲存 object 參考。CollectionBase、ReadOnlyCollectionBase、Di
Effective C# 原則 39:使用 .NET 驗證 (上)
驗證使用者輸入的必要性 使用者輸入多樣且不可信,可能導致例外或 SQL 注入攻擊。.NET 框架提供 Web 與 Windows 兩套驗證機制,應善用以降低自寫
Effective C# 原則 39:使用 .NET 驗證 (下)
正則表達式解析:美國電話號碼 ((\(\s*\d{3}\s*\))|(\d{3}))-?\s*\d{3}\s*-\s*\d{4} ((\(\s*\d{3}\s
Effective C# 原則 38:使用與支援資料繫結 (上)
傳統手動同步 vs. 資料繫結 傳統寫法需在 Leave 事件手動同步控制項與資料物件,程式碼重複且易漏處理事件: myDataValue.Name = te
Effective C# 原則 38:使用與支援資料繫結 (續)
值型別繫結的限制與解決 FinancialResults 為值型別(struct),屬性 getter 傳回複本,無法支援雙向繫結編輯。需改為參考型別(clas
Effective C# 原則 37:使用標準組態機制
組態儲存演進與最佳實踐 INI 檔結構受限、登錄表寫入需管理員權限且風險高。.NET 提供標準組態位置:應用程式專屬、受限使用者權限下也能運作。 應用程式組態