C# 使用 Source Generator 自動產生程式碼
RojerChen.2024.09.11
Source Generator 可以在我們撰寫程式碼個過程中,依照現有的程式碼內容去產生新的程式碼,透過下面這個例子可以來看一下效果。
假設我們有一個需求,每次有新增一個屬性都要修改 ToString 這個 Function,套用 Source Generator 之後,效果就會如下:
使用心得:
- 撰寫 Source Generator 需要熟悉 Roslyn 編譯器的 API,對於開發來說複雜度上升不少。
- 現在有 ChatGPT 這樣的 AI 工具後,撰寫 Source Generator 的程式碼會容易一些,但是除錯仍舊不太容易。
- 只支援 .Net Core 不支援 .NET Framework。
- IDE 支援不佳。如果你想要看到 Roslyn 產生出來的程式碼,目前測試下在 Rider 2024.2.x 版本才可以看到 ,目前其他版本是沒有辦法顯示的。
- Rider 2024.2.X (支援)
- Rider 2023.3.X (不支援)
- VS2022 17.11.2 (不支援)
- Source Generator 可以讓我們在撰寫程式碼的過程中自動依據現有的程式碼產生出對應的內容。但是想要加快整個專案的開發速度,Project Template、T4、Source Generator、Code Snippet、Github Copilot 缺一不可。
※延伸閱讀