Roslyn 魔法工坊:打造你的 Source Generator
提醒您!
此為歷史活動,如您對本活動有興趣,您可以從以下管道得到我們最新活動資訊:
活動等級:中階→進階
活動規劃
- 課程介紹與基礎概念
- 教材與範例說明
- Source Generator 概述
- 為什麼需要 Source Generator
- C# 編譯流程與開發環境設置
- C# Compile Pipeline
- 前置作業
- 專案設定
- Hello Generator 入門範例
- Generator Class 基本需求
- 第一個 Source Generator 實作
- Debug Source Generator 技巧
- 核心 API 與參數詳解
- Initialize 核心參數
- IncrementalGeneratorInitializationContext 結構
- Providers 類型
- 三種輸出程式碼的方法
- IncrementalValueProviderExtensions 擴充方法
- 實戰專案 - Enum To String (六個版本演進)
- Version 1: 基礎實作
- 基本 Enum 擴充方法生成
- 效能比較分析
- 基礎 predicate 和 transform 實作
- Syntax API 深入探討
- Syntax Tree 結構
- 三種語法結構主要型別
- 語法節點繼承樹
- Semantic Model 語意模型
- GeneratorSyntaxContext 結構
- ModelExtensions 類別
- 從 Syntax 取得 ISymbol
- ITypeSymbol Interface
- AttributeData 類別應用
- ISymbol.ToDisplayString 格式化
- Version 2: 改善語意模型處理
- 使用 ForAttributeWithMetadataName
- 簡化 Attribute 識別
- 開發環境效能優化
- Version 3: 自訂 Generator Model
- 建立 EnumGeneratorModel
- 效能快取機制
- Version 4: 資料模型改善
- 使用 struct 和 record
- 應用 SrcGenBoost 套件
- Version 5: 外部 Enum 支援
- ExistEnum Attribute 設計
- Partial Class 擴充方法
- TypedConstant 結構應用
- Version 6: 診斷功能
- Report Diagnostics 實作
- DiagnosticDescriptor 設定
- 錯誤診斷與回報機制
- Version 1: 基礎實作
- NuGet 套件打包
- 打包步驟詳解
- 實戰專案 - Notify Property Changed (兩個版本)
- Version 1: 基礎屬性通知
- Partial Property 處理
- 適當的 Diagnostic Location 處理
- Version 2: 進階屬性通知
- NotifyAnother Attribute 支援
- 屬性相依關係處理
- Version 1: 基礎屬性通知
- 八、Interceptor 攔截器
- Interceptor 簡介與優勢
- InterceptsLocationAttribute 應用
- Stopwatch Measure 實戰範例
- 自訂編譯選項處理
- 九、測試策略與實作
- Diagnostic Report 測試
- Transform Result 測試
- Syntax Tree 測試
適合對象
- 對 C# 語言與編譯器技術有熱情的工程師
- 希望減少 boilerplate、提升維護性與一致性的開發團隊
- 想導入 Source Generator 至現有架構中的技術領導人或架構師
重點特色
實戰案例引領
- 透過 10 個完整範例,從入門到進階循序漸進:
- 6 種 Enum-to-String 產碼策略,涵蓋多種使用情境
- 2 種 NotifyPropertyChanged 實作與進階延伸
- 1 個編譯期 Interceptor 範例,掌握方法攔截與程式碼注入
- 1 個測試專案,驗證 SyntaxProvider 轉換模型、程式碼輸出與 Diagnostic 正確性
理論+實務並進
- 以「動手實作」為起點,再回頭拆解核心原理,帶你構建完整的 Roslyn 知識地圖。
全面技術覆蓋
- 深入探討:
- Roslyn 核心:Syntax API、SemanticModel
- 增量生成:Incremental Generator
- 高階產碼技巧:Attribute 驅動、partial class、語意 (metadata-driven) 分析
- Interceptor & CallTarget 實務應用
- 徹底測試:GeneratorDriver、TrackedSteps 觀測與驗證