2009-02-16 78 views
10

是否有特定的情況下,應該使用類而不是屬性的自定義屬性? 我知道屬性是因爲他們發現性和性能的preferrable,但屬性...當我應該絕對使用它們?何時使用屬性而不是屬性?

UPDATE:

Here是在一個帖子中埃裏克利珀對這個決定。

回答

12

埃裏克利珀有great blog post正是解決這一決定。

他的總結是:

總之:使用屬性來描述你的機制,使用屬性的域模型。

我還想補充一點:屬性值是有效靜態的 - 換句話說,它是類型描述的一部分,而不是類型的任何實例。

一個棘手的位可以來當某些基本類型的每個實例必須具有一個屬性(例如描述),但不同的具體派生類型要在每個類型的基礎上,而不是每個實例中指定的描述。你經常會得到總是返回常量的虛擬屬性 - 這並不令人滿意。我懷疑德爾福的類參考可能幫助這裏...不確定。

編輯:給一個機制的例子,如果你裝飾一個類型來說明它來自數據庫中的哪個表,那就是描述數據傳輸機制,而不是說有關正在傳輸的數據模型的任何事情。

+0

喬恩,你能不能從.NET框架的廣泛使用部分帶來的「描述機制」的例子嗎? – Valentin 2009-02-16 07:26:29

0

有兩個用例:

1)使用自定義屬性他人已經定義,如可在主方法中使用的System.LoaderOptimization屬性。這些屬性用於指導平臺代碼,如CLR,WPF,WCF或調試器以某種方式運行代碼,並且有時可能非常有用。閱讀各種平臺主題的書籍是瞭解何時以及如何使用這些屬性的好方法。

2)創建自己的自定義屬性,並用它來裝飾類(或方法,屬性等)。除非您還有使用Reflection的代碼來注意這些屬性的用法並以某種方式更改行爲,否則這些都不起作用。這種用法應該儘可能避免,因爲性能很差,比訪問一個類的靜態成員要大得多。

相關問題