活動簡介

Roslyn 魔法工坊:打造你的 Source Generator

活動規劃

這是一場專為中高階 C# 開發者量身打造的技術實戰活動,聚焦於 .NET 編譯流程中的神秘利器 Source Generator

從實戰出發,透過 10 組高強度範例專案,帶你逐步掌握 Enum-to-String、NotifyPropertyChanged 到 Interceptor 的多樣應用場景,並延伸到 SyntaxProvider 模型轉換與 Diagnostic 檢測等進階技巧。

你將深入探索 Roslyn 的核心組件(如 Syntax API 與 SemanticModel),學習如何在 編譯時自動生成高效能的程式碼,大幅簡化樣板流程、強化可維護性,同時精準對應現代企業在程式碼穩定性、高效能、與開發流程自動化上的實務需求。

這不只是學寫 Generator,而是打造懂你邏輯、能與你共舞的程式分身。若你想學的不只是語法,而是如何把 Source Generator 真正「用起來」,這堂課會是你駛向 Roslyn 深海的船票。

活動等級:中階→進階

活動講師

Bill
Bill

熱衷於物件導向程式開發的探索,喜歡研究物件導向基本理論與歷史,並偏好以非技術性的方式傳達物件導向開發的概念。專長領域為 RFID、通訊、OOP 與 Windows Store/Phone App 開發。

講師經歷:
  • 2009-至今 微軟最有價值專家 Microsoft MVP  Development Technologies
  • 台灣微軟 特約講師
  • Intel 特約講師
  • 全球前25大電子公司 UWP 顧問
  • SkillTree 專任講師

活動介紹

  • 課程介紹與基礎概念
    • 教材與範例說明
    • 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 設定
      • 錯誤診斷與回報機制
  • NuGet 套件打包
    •  打包步驟詳解
  • 實戰專案 - Notify Property Changed (兩個版本)
    • Version 1: 基礎屬性通知
      • Partial Property 處理
      • 適當的 Diagnostic Location 處理
    • Version 2: 進階屬性通知
      • NotifyAnother Attribute 支援
      • 屬性相依關係處理
  • 八、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 觀測與驗證  
       

本活動提供午餐

  • 為了節省您的時間,我們提供免費便當。

本活動建議攜帶筆電

  • 建議您攜帶筆電,以利活動實做練習。
  • 必要軟體將會於活動通知信中說明。

選擇票種

費用要報帳!

報名時您只要選取「報帳發票」並且輸入相關資訊,活動當天雲端發票自動寄送到您的信箱,方便您報帳!

自我學習不該變成沈重的負擔!

我們知道您的學習是為了將來的薪水,為了避免造成您的負擔,我們提供了 3、6 期零利率的信用卡分期付款,歡迎多加利用。

  • 一般票

    販售期間: 2025-06-232025-08-01
    NT$ 6,000
    可得紅利:600
  • 優惠票

    先搶先贏,搶完就沒囉
    販售期間: 2025-06-232025-08-01
    NT$ 5,280
    可得紅利:264
  • 攜伴票

    發票無法分開,主揪者須收齊款項後一次付款,主揪高紅利。
    販售期間: 2025-06-232025-08-01
    NT$ 5,100
    可得紅利:408
  • 助教票

    助教專用票卷。(助教為內定並非對外販售)
    販售期間: 2025-06-232025-08-01
    NT$ 500

訂閱電子報

如果您希望收到最新活動訊息,請訂閱電子報

還想知道什麼就留言吧

持續學習

  • 我們使用 Microsoft Teams 做課程討論平台。了解更多

注意事項

  • 若報名人數不足15人,或因不可抗拒因素(如:天災、停電)主辦單位有權取消當次活動,並無息退還全額活動費用。
  • 主辦單位保留接受報名與否之權利,倘因故無法接受報名,將會無息退還全額活動費用。
  • 主辦單位保留對活動內容調整的權力。

退款方法

  • 因部分必要支出與行政費用,完成繳費後如取消報名,將依據時間遞減退還費用。
  • 活動前7天申請退費,退費用0 %
  • 活動前8天申請退費,退費用90 %
  • 收到申請表後我們會主動與您聯繫。

目前活動