C# 學習 亂解讀 屬性 Attribute
阿新 • • 發佈:2021-10-03
資料:
Attribute 類-
Attribute 類 (System) | Microsoft Docs
C#中Attribute的應用_阿拉丁部落格-CSDN部落格
看了好幾篇博文,胡亂解讀下。
1 Atrribute是個類,有n中方法,n中繼承(廢話)
2Atrribute類施加在 類/成員/方法 上
如
[Hello("這是個啥?")] class AnimalTypeTestClass { [AnimalType(Animal.Dog)] public void DogMethod() {} [AnimalType(Animal.Cat)] public void CatMethod() {} [AnimalType(Animal.Bird)] public void BirdMethod() {} }
3 施加屬性類時,屬性類比如已經例項化了。
如上面的
class AnimalTypeTestClass。雖然只是類定義。單我們已經知道,這個類有個
[Hello("這是個啥?")]屬性,類裡面的方法 DogMethod,有個[AnimalType(Animal.Dog)]屬性。這個屬性是有具體值的,是例項化了的。
4 屬性類有啥用
對應定義了的屬性。就等同於int i=0;一樣,後面如果不用i 那麼沒啥鳥用。所以定義了屬性,後面要用才有意義。
我理解的有兩種用法,1 系統用 2 自用
4.1 (系統用)Attribute作為編譯器的指令
系統用,定義屬性後,系統自會使用他,我們就不管了。
在C#中存在著一定數量的編譯器指令,如:#define DEBUG, #undefine DEBUG, #if等。這些指令專屬於C#,而且在數量上是固定的。而Attribute用作編譯器指令則不受數量限制。比如下面的三個Attribute:
Conditional:起條件編譯的作用,只有滿足條件,才允許編譯器對它的程式碼進行編譯。一般在程式除錯的時候使用。
DllImport:用來標記非.NET的函式,表明該方法在一個外部的DLL中定義。
Obsolete:這個屬性用來標記當前的方法已經被廢棄,不再使用了。
4.2 自用
自用玩的比較多的是json轉換...
不管怎麼施加Attribute,總是有其他的地方要用到。
那麼就要想辦法取出屬性。
比如 祖傳程式碼
class a{
string str1;
string str2;
string str3;
}有個需求要轉換為json是不是很抓蝦
搞個屬性...