1. 程式人生 > >【C#懶蛋編程——5分鐘經驗分享】03使用Description特性標簽,簡化查找表編寫

【C#懶蛋編程——5分鐘經驗分享】03使用Description特性標簽,簡化查找表編寫

預處理 分鐘 簡單的 清晰 scrip 開發 [] 使用 如何

因為篇幅很短,所以嘗試全文字寫法。幾分鐘看完的文字也沒必要用十幾分鐘寫完是吧。

Attribute(特性標簽)是C#中非常有用的一個特性,有用到什麽程度呢?以至於C++的很多開發者,都通過自己的預處理器和標簽來增加這個功能(典型的如Qt和Unreal)

1.
在各種開發中,我們經常需要使用枚舉來代表一組特性,同時又需要一些文字描述,這些描述可能是路徑,或者是字符串,兩者是一一對應的。

比如,我定義了一組材質,每個對應不同的文件加載路徑。或者我定義了一組數據類型,每個對應不同的字符串簡寫。

我們自己寫的數據導出工具中,就有這種寫法。我在枚舉中設定了很多導出類型,如IntArray,FloatArray等,但是我想要在對應的地方,把這些類型輸出為字符串的簡寫,如IntArray輸出為"Int[]",FloatArray輸出為"Float[]"。要完成這一點,兩者需要一個簡單的對應關系。

如何做呢,可以做成Dictionary,也可以寫class,或者做成外部Config,方法很多,但是這些寫法都有一個問題,就是太羅嗦,內聚性不夠。

2.
C#中,我們可以使用Description標簽,把需要綁定的字符串內容填寫進去,然後寫一個函數,在需要的時候,把枚舉的這個Description抓出來就行了。

之前的寫法,你需要至少一組枚舉值和一個查找表,如果你用class或外部config,你要寫更多東西。

這種寫法下,你只需要一組帶Description標簽的枚舉就行了。那個抓取函數是提前寫好的,可以重復使用。代碼非常清晰簡潔,內聚很高。至於效率什麽的我不擔心,畢竟我的應用領域,C#這種寫法一般都是小型的初始化,花上一點代價,讓代碼更清晰是值得的。

【C#懶蛋編程——5分鐘經驗分享】03使用Description特性標簽,簡化查找表編寫