[英]What are the .NET 5 Source generators?
源代碼生成器真的沒什么神奇的——它只是一些自定義代碼,將文本生成到文件中,然后將其插入編譯過程並成為二進制文件 output(例如 DLL 或 EXE)的一部分,就好像它是手動輸入的一樣在你點擊編譯之前在一些源文件中。
這里唯一的“魔法”是分析器作為生成器的形式化概念,它使 Visual Studio 能夠自動將原始源代碼傳遞到您的自定義生成器例程中,並在您構建項目時包含 output。
源代碼生成器的一個應用是為某些需要運行時反射的操作創建專門的、類型特定的代碼。 運行時反射通常相當緩慢且占用大量 CPU,但通常需要它來集中對未知對象進行常見操作的邏輯。 一個常見的例子是對象的序列化和反序列化。 這可以通過反射(在運行時查找屬性、調用 getter 和 setter 等)或通過更快、類型特定的代碼直接引用屬性和讀取/寫入數據流來完成。 然而,為每種類型創建這樣的專用代碼是一項非常枯燥、重復的工作,因此請輸入源代碼生成器。 他們可以在構建期間進行“反射”,並將 output 苗條、快速的代碼轉換為臨時.cs 文件,這些文件與產品一起編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.