天天看點

.NET簡談特性(代碼屬性)

1.什麼叫特性Attribute

特性對一般.NET程式設計人員來說并不陌生,自從我們開始接觸C#語言的時候,我們多多少少已經接觸了關于特性的使用;但是對于初學者來說真的不明白特性的意義,特性到底是屬于類還是類執行個體,這些概念搞不清楚對了解代碼的邏輯真的很順利;這篇文章我将帶您來了解特性的作用,其實特性的真的很友善;至少我認為自從我懂特性之後,我的代碼便的更加的人性化,程式的結構清晰易懂,是以本人在寫代碼的時候經常喜歡用一些能夠簡單明了的表達對象的特點的風格;

其實特性Attribute就是一段代碼屬性,附加在我們定義的對象上的,特性屬于對象而不是執行個體,這個概念要注意;為什麼需要特性,我想任何一個開發人員都不需要問為什麼,因為它的好處我們是拍手叫絕的,好東西為什麼不要呢;之是以你沒感覺到是因為朋友你還沒發現他的優點;我們還是拿代碼例子來講吧,這樣便于我們雙向交流;

2.執行個體代碼學習

我們回到TableName特性,特性是一中特殊的類型,這個類型繼承自Attribute對象;

我們定義的特性還需要用系統的AttributeUsage特性進行标記,系統好将我們自己定義的特性當成特殊的類型處理;在此穿插一句,特性也是屬于類類型,隻不過是一種特殊的類型,這中類型是需要我們用系統特性進行說明的,這樣系統在編譯的時候才會将我們的特性進行中繼資料的區分,我們通過反射就可以把這個特殊的中繼資料拿到;

也許你會問,我這樣标記了一個類的特性有什麼用呢,當然有用,我們下面通過反射來進行動态讀取對象的特性;特性屬于類類型也就是屬于Type,我們是通過類型擷取而不是執行個體擷取特性;

這樣我們就拿到了特性所标記的值,其實你可以把特性當成是一種靜态類,當我們擷取特性的時候,系統會将特性類進行加載到記憶體中,我不知道特性類的資料在記憶體中的布局是什麼樣的,但是對我們剛開始學習使用的時候,可以這麼先了解;