我最初使用這個屬性,通常是為了以下兩個目的:在開發態,處理控制項可編輯資訊的控制與狀態重新整理控制;引用外部的dll,api。
csla中大量的使用了attribute,於是我也學習了一下它的使用。
網上有很多attribute使用的網文,我是用這篇入門的,大家也可以看看:
還有一篇關於attribute編譯以後的實際本質描述的文章:
.net中attribute除了提供很多內部呼叫外,主要目的用於借助attribute反射呼叫出更多有意義的資訊。
l內部attribute:
conditional(條件)、obsolete(宣告舊方法)、全域性屬性、attributeusage
反射語法:(同時給出了語法環境)
修飾attribute的屬性,共有三個元素:validon,allowmultiple,inherited。
validon:應用範圍;
allowmultiple:是否允許多次定義;
inherited:是否允許被繼承;
注意:當inherited==true時,父類的也會出現在其attribute中,所以此時當allowmultiple==true就可能看到多個,而allowmultiple==false,則只能看到最多乙個,自己有了就不繼承,自己沒有看父類的,父類也沒有看爺爺類的這樣。
樣例可以看前面反射語法小段的引用。
csla中使用的attribute有以下一些常用的樣例,看懂了這些,對於csla的**就能通了一大部分:
1.[serializable()]//注意:這裡加不加()一樣,都是呼叫serializable -attribute()作為構造方法;
2.[runlocal]
3.[editorbrowsable(editorbrowsablestate.advanced)]
實際不管如何設定,均可以使用。advanced是在options裡c#專案中設定。
[transactional(transactionaltypes.transactionscope)]
包含引數的attribute,相當於[transactional(transactiontype = transactionaltypes.transactionscope)]具體事務處理後面講解。
5.[notundoable()] 6.
[system.diagnostics.codeanalysis.suppressmessage("microsoft.naming", "ca1707:identifiersshouldnotcontainunderscores", messageid = "member")]
相當於system.diagnostics.codeanalysis.suppressmessage ("microsoft. naming", "ca1707:identifiersshouldnotcontainunderscores")
suppressmessageattribute.messageid = "member")
suppressmessage是乙個阻止**分析完畢後報錯的乙個屬性標識,但其並不影響普通編譯後產生的warning,如果我們不使用**分析,將不會用到這個屬性標識,所以看到這樣的**可以直接跳過。
如果非要了解的話,可以google一下
system.diagnostics.codeanalysis.suppressmessage,同樣有不少解釋。
7.linq中我們介面拖拽資料庫元素後,系統內部形成的內部**
-- 資料庫
public partial class ptrackerdatacontext : system.data.linq.datacontext
-- 資料庫使用者自定義函式
--表
--欄位
1.runlocalattribute
標識後,即使遠端方法已經註冊到當前客戶端,也執行本地的方法。
個人理解這應該是降低伺服器負載的一些可以本地執行、不涉及安全性的一些方法。
2.notundoableattribute
根據字面意思解釋
3.indexableattribute
用於linq中擴充套件的幾個類實現的擴充套件屬性,標識了3種不同的index方式:
僅查詢時索引、一直索引、一直不索引。暫時用不上
4.objectfactoryattribute(★)
當標識上工廠方法的屬性後,預設定義的工廠實現方法為:
我們可以再次指定我們自己實現這四個方法的名稱,替代它預設的方法。
5.mobilefactoryattribute
silverlight中使用的,同objectfactoryattribute的乙個attribute
6.transactionalattribute
定義事務的型別,共三種,後面章節會詳細解釋這三種常用的事務型別。
7.usenetdatacontractattribute
wcf關注
8.hostpropertyattribute
暫時未關注
從CSLA中學C 系列 序
最近學習了乙個.net的框架csla,對於這個框架我就不想多說,微軟牛人寫了n年形成的乙個框架,框架大量使用微軟.net的各種技術,全方位支援微軟的技術 wpf,silverlight支援c s開發和web應用。微軟人自己寫的cs開發框架csla確實凝聚了微軟的.net程式設計的各種最初的思路。早一...
從程式中學python 2
python實現文件中計算字串出現的次數和字母出現的次數 from collections import counter import string import sys punctuations string.punctuation string.whitespace 標點符號和空格 換行,製表符...
C 執行緒從陌生到熟悉 2
表1 1 threadstate定義的列舉常數 成員名稱 說 明 aborted 執行緒處於stopped狀態中 abortrequested 已對執行緒呼叫了thread.abort方法,但執行緒尚未收到試圖終止它的掛起的system.threading.threadabortexception ...