從CSLA中學C 2 Attribute的使用

2021-05-23 06:37:53 字數 2605 閱讀 7959

我最初使用這個屬性,通常是為了以下兩個目的:在開發態,處理控制項可編輯資訊的控制與狀態重新整理控制;引用外部的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 ...