漫話CLR 定製Attribute

2022-04-30 17:36:13 字數 889 閱讀 1677

<>用了10頁紙來講attribute,其實重點只有這段話:

所謂"定製attribute",就是乙個類的例項,它被序列化成為駐留在元資料中的乙個位元組流.在執行的時候,可以對元資料中包含的位元組進行反序列化,從而構造類的乙個例項.

簡而言之,就是對乙個類的附加描述資訊.我個人理解為編譯到程式中的"注釋".

這裡不打算討論如何使用attribute,因為不同的attribute他的使用方式肯定是不同的,列舉其使用方法是msdn幹的事情.

也不打算說明如何定義你自己的attribute,因為msdn上說的比我更加詳細.

我想說的其實就是,純粹的定製attribute毛線用都不起,只會給程式集中生成額外的元資料.如果你想找的類似ef中的[key],使用非託管**的[dllimport],序列化的特性[serializable] 等等這些特性,你找錯方向了,attribute實現不了這些功能,真正起作用的是反射.你看到像魔法一樣的,只增加一些attribute,這些類或者方法或者其他什麼的就有了使用非託管**的能力,或者有了序列化的功能,或者自動的進行主鍵的設定操作,其實沒有那麼神奇,他們都是反射在背後做的.

attribute只是給類,方法,屬性這些type增加了額外的資訊.而後通過反射,在執行時取到額外資訊(attribute)的內容,接著再利用反射回來的資訊進行操作判斷,進行業務邏輯.

ps:還有編譯器...

/*

其實attribute真的是非常強大的東西,結合反射使用只是其中的一部分,attitude主要是面向編譯器的.aop程式設計中的postsharp就是使用了attribute.

*/

漫話CLR 委託

委託,delegate,說白了也就是個語法糖.沒有他我們可以寫程式,有了他我們可以寫出更好的程式.delegate void feedback int value 方法簽名之前前加上 delegate 關鍵字,我們就定義了乙個最簡單的委託.但,事實上編譯器為我們做了另一件事 建立委託類.人肉解壓縮一...

漫話成語 謠言

良言一句三冬暖,惡語相加徹骨寒。比惡語更可怕的就是謠言!今天我們就一起來看幾個與謠言有關的成語與典故吧。1.三人成虎 釋義 三個人謊報城市裡有老虎,聽的人就信以為真。比喻說的人多了,就能使人們把謠言當作事實。典故 原文 戰國策 魏策二 龐蔥與太子質於邯鄲,謂魏王曰 今一人言市有虎,王信之乎?王曰 否...

漫話密碼儲存

密碼是用來進行鑑權 身份認證 一種手段,說白了就是證明你是誰。一般鑑權都可以總結為下面3種形式 你知道什麼?如密碼,密碼提示問題等 你有什麼?如信用卡,token卡等 你是什麼?如指紋識別,瞳孔識別等 常見的針對密碼的攻擊方式有 暴力破解 brute force 字典攻擊 dictionary at...