推薦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 ,質量都不錯。
原文發於: