c 特性基礎

2021-09-24 19:32:37 字數 1190 閱讀 5059

特點: 特性典型的aop程式設計思想,可以在不破壞封裝的前提下,動態增加功能,額外資訊, 是乙個類,可以標記在別的元素上面,標記後對編譯/執行其實都沒有影響,只是生成了一些內部的元素,普通的方式找不到但可以通過反射來獲取並使用

特性對於程式來說一切都是假象,程式編寫中無法訪問到,對程式也沒影響,我們通過反編譯發現,特性被編譯成內部元素,但是**無法訪問到,而是在matadata中記錄 而反射可以動態讀取並使用meatada,基於反射,就可以在程式中去識別並使用特性

對於乙個欄位或類上需要多個屬性的,我們應該採用面向切面程式設計的思想來寫特性的結構,採用繼承的關係,這樣我們可以更方便的操作; 對於不是多個判斷的我們不需要採用繼承的結構,一般解析特性需要:

獲取型別 type type = evalue.gettype();

獲取我們需要的字段或屬性... foreach (var item in type.getproperties())

判斷是否存在此特性 if (item.isdefined(typeof(abstractvalidateattribute), true))

找到上面的特  多個(var attributearray = item.getcustomattributes(typeof(abstractvalidateattribute), true);foreach (abstractvalidateattribute item1 in attributearray) )單個( remarkattribute remarkattribute =(remarkattribute)field.getcustomattribute(typeof(remarkattribute));)

如果我們想要自定義特性都要繼承自attribute類

簡單示例**如下:

[attributeusage(attributetargets.enum | attributetargets.field)]

public class remarkattribute : attribute

public string remark }

}public static class remarkextend

else

return remarkattribute.remark;

}catch (exception ex)}}

public enum userstate

C 特性基礎

以下是學習筆記 泛型 把型別做到通用,最終目的是可以動態程式設計 反射 讀取dll檔案描述資訊的乙個類庫 特性 貼標籤,貼上標籤後就產生了新的功能 特性 1,是乙個類。2,繼承自attribute。滿足這2個就是特性。目前哪些地方是使用到了特性 幾乎所有的框架都用到了,mvc,webapi,ef,i...

C 基礎之特性

使用特性,可以有效地將元資料或宣告性資訊與 程式集 型別 方法 屬性等 相關聯。將特性與程式實體相關聯後,可以在執行時使用反射這項技術查詢特性 system.attributeusage system.attributetargets.class system.attributetargets.st...

c 基礎知識 特性

特性 attribute 是用於在執行時傳遞程式中各種元素 比如類 方法 結構 列舉 元件等 的行為資訊的宣告性標籤。您可以通過使用特性向程式新增宣告性資訊。乙個宣告性標籤是通過放置在它所應用的元素前面的方括號 來描述的。特性 attribute 用於新增元資料,如編譯器指令和注釋 描述 方法 類等...