一、特性的基本概述
attribute(特性),
公共語言執行時允許新增類似關鍵字的描述宣告,叫做attributes, 它對程式中的元素進行標註,如型別、字段、方法和屬性等。attributes和microsoft .net framework檔案的元資料儲存在一起,可以用來向執行時描述你的**,或者在程式執行的時候影響應用程式的行為。
二、特性的應用
(1)在.net中,attribute被用來處理多種問題,比如序列化、程式的安全特徵、防止即時編譯器對程式**進行優化從而**容易除錯等等。
定製的特性本質上是為乙個類的元素上去新增附加資訊,並在執行其通過反射得到該附加資訊(在使用資料實體物件時經常用到)
(2)attribute作為編譯器的指令時的應用:
conditional:起條件編譯的作用,只有滿足條件,才允許編譯器對它的**進行編譯。一般在程式除錯的時候使用。
dllimport:用來標記非.net的函式,表明該方法在乙個外部的dll中定義。
obsolete:這個屬性用來標記當前的方法已經被廢棄,不再使用了。
例:如果在乙個程式元素前面宣告乙個attribute,那麼就表示這個attribute被施加到該元素上,下面的**:
[dllimport]施加到messagebox函式上。
[conditional]施加到displayruntimemessage方法。
[obsolete]施加到displaydebugmessage方法上
三、補充說明
attribute就是乙個類,所以dllimport也是乙個類,attribute類是在編譯的時候被例項化的,而不是像通常的類那樣在執行時候才例項化。
attribute例項化的時候根據該attribute類的設計可以帶引數,也可以不帶引數:
dllimport就帶有"user32.dll"的引數。
conditional對滿足引數的定義條件的**進行編譯,如果沒有定義debug,那麼該方法將不被編譯。
obsolete表明了dispalydebugmessage方法已經過時了,它有乙個更好的方法來代替它,當我們的程式呼叫乙個宣告了obsolete的方法時,那麼編譯器會給出資訊。
C 特性和反射的應用(一)
之前的專案使用了乙個輕量級的開源orm框架fluentdata,因為專案中領域模型和實體模型合在一起,新增資料時就會出現因為實體和資料庫表對應有差異而不能直接儲存 某些實體的屬性在資料庫表裡沒有對應的字段 通過檢視fluentdata的源 發現可以給實體裡面無法對應資料庫表字段的屬性新增乙個自定義特...
C 中的特性
c 中的特性,允許向程式的程式集增加元資料,用於儲存程式結構資訊。obsolete特性標記方法已被棄用。並在 編譯時,顯示警告資訊。obsolete 該方法已被棄用 static void oldmethod conditional特性,使用或取消方法的呼叫,執行依賴於指定的預處理識別符號。cond...
C 中的「Squiggles」特性
從vb.net開始 就具有的後台編譯器,給了開發人員實時的編譯器錯誤反饋,持續地更新 完成資料,並作為其他特性的宿主。這個功能的缺點在於它不能被關閉,因為太多的特 性要依賴於它擁有的資料。而另一方面,c 卻只有有限的語法檢查,而 完成只在編譯時才會完全更新。u0026 xd n 這當然不是微軟所希望...