您當前的位置:首頁 > 繪畫

推薦fody庫

作者:由 vitamind3 發表于 繪畫時間:2022-03-26

最近兩年在C#專案裡廣泛的使用了fody庫,感覺挺不錯,這裡做個推薦。簡單說Fody的功能是在

編譯

階段修改生成的IL程式碼,新增一些功能。

主頁:GitHub - Fody/Fody: Extensible tool for weaving 。net assemblies 。

能新增哪些功能呢?看這裡 Home/addins。md at master · Fody/Home · GitHub 。

其中一些我經常用到的擴充套件說明一下:

Anotar , 適配了多個logging庫,極大簡化logging呼叫。

Equals , 生成 Equals, GetHashCode 過載。一個類似的擴充套件是 Equatable ,我更喜歡用這個。

Janitor , 簡化實現 IDispose 。

MethodTimer , 計時。

RuntimeNullables , 對 C# 8。0 的 NRT 型別做判斷,即檢查非空型別,如果為空即拋異常。這個擴充套件我現在必用。

ToString, 實現 ToString() ,有價值。

MethodDecorator, 可為方法新增執行前、執行後的程式碼。

MethodCache, 類似於 Python 中的 lru ,快取方法的結果。

除了 Fody ,還有沒有類似的工具?當然有,用 source generator 也能自動生成程式碼,但與Fody還是有差別,例如source generator 無法實現RuntimeNullables這樣的功能。如果自己想開發類似功能,現在優先的選項是 source generator 。 如果不想自己動手,那可以直接使用 Fody 專案中這些已經積累的 addins ,質量都不錯。

原文發於:

標簽: Fody  source  generator  功能  新增