C 特性基礎

2022-01-11 23:30:00 字數 2483 閱讀 2774

以下是學習筆記:

泛型:把型別做到通用,最終目的是可以動態程式設計

反射:讀取dll檔案描述資訊的乙個類庫

特性:貼標籤,貼上標籤後就產生了新的功能

特性:1,是乙個類。2,繼承自attribute。滿足這2個就是特性。

目前哪些地方是使用到了特性:幾乎所有的框架都用到了,mvc,webapi, ef,ioc,aop

特性使用場景:資料驗證,授權

1,資料驗證:

舉例1:

說明:[required]:這個屬性不能為空,不輸入值就報錯

[disaply(name=「電子郵件」)]:這個屬性自動顯示名字:「電子郵件」

舉例2:

說明:舉例3:

說明:還能指定資料型別

2,授權

說明: 

這是乙個授權的,標註了這個屬性【authorize】,下面的這個方法才能用。

1,系統自帶特性

[debuggerstepthrough]:不讓除錯

[obsolete]:已過時的

有一些是影響到了編譯器的執行

2,自定義的

舉例:系統自帶的特性

#region 系統自帶的特性

[obsolete("這個方法過時了,使用newmedthod代替",false)]//obsolete用來表示乙個方法被棄用了,引數1是字串提示的,引數2,true或false(true是錯誤,false是警告)

//如果引數2是true ,執行 oldmedthod()就報錯啦

static void oldmedthod()

static void newmedthod()

[conditional("istest")]//conditional特性,這個方法不會被呼叫了。#define istest//定義了乙個巨集,在using前面加這一行,就可以繼續使用

static void test1()

static void test2()

[debuggerstepthrough]//可以掉過debugger的單步除錯,不讓進入該方法(當我們確定這個方法沒有任何錯誤的時候可以使用這個特性)

要把defidattribute看出是乙個普通的類,裡面可以寫字段,方法,屬性,,,

1,建立特性:

//自定義attribute

[attributeusage(attributetargets.class,allowmultiple=false,inherited=false)]

//引數1:可以被哪些情況下使用,如果是all就是被所有情況下都可以用。

//引數2:是否可以放多次

//引數3:是否被繼承

public class helpattribute:attribute

public string description}}

//呼叫自定義的attribute

//[help("this is a do-nothing class")]//呼叫特性方法1:

[helpattribute("this is a do-nothing class")]//呼叫特性方法2:寫上全稱也可以

public class anyclass

2,特性呼叫:

#region 通過反射來獲取attribute中的資訊

console.writeline("------------通過反射來獲取attribute中的資訊-------------");

helpattribute helpattribute;

foreach (var item in typeof(anyclass).getcustomattributes(true))

", helpattribute.description);}}

#endregion

結果:anyclas description:this is a do-nothing class

c 特性基礎

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

C 基礎之特性

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

c 基礎知識 特性

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