共用方式為


屬性 (.NET Framework 設計指導方針)

備註

此內容經Pearson Education, Inc.授權從架構設計指導方針:可重複使用 .NET 程式庫的慣例、習慣用語與範式 (第2版)轉載。 該版於2008年出版,該書自那以後已於 第三版全面修訂。 此頁面的某些資訊可能已過期。

System.Attribute 是用來定義自定義屬性的基類。

屬性是可新增至程式設計元素的批註,例如元件、類型、成員和參數。 它們會儲存在組件的元數據中,而且可以使用反射 API 在執行時存取。 例如,Framework 定義 ObsoleteAttribute,可以套用至型別或成員,以指出該型別或成員已被棄用。

屬性可以有一或多個屬性,這些屬性會攜帶與屬性相關的其他數據。 例如,ObsoleteAttribute 可以攜帶有關類型或成員被標記為不建議使用的版本的額外資訊,以及取代過時 API 的新 API 的說明。

套用屬性時,必須指定屬性的某些屬性。 這些屬性稱為必要屬性或必要自變數,因為它們會表示為位置建構函式參數。 例如, ConditionStringConditionalAttribute 屬性是必要屬性。

當套用屬性時,不一定必須指定的屬性稱為選擇性屬性(或選擇性自變數)。 它們會以可設定的屬性表示。 編譯程式會提供特殊語法,以在套用屬性時設定這些屬性。 例如, AttributeUsageAttribute.Inherited 屬性代表選擇性自變數。

✔️ DO 將自訂義屬性類別命名時以「Attribute」作為後綴。

✔️ 請將套用 AttributeUsageAttribute 至自訂屬性。

✔️ DO 提供選擇性自變數的可設定屬性。

✔️ DO 提供必要自變數的僅限取得屬性。

✔️ DO 提供建構函式參數,以初始化對應至必要自變數的屬性。 每個參數都應該有與對應屬性相同的名稱(雖然大小寫不同)。

❌ 避免提供建構函式參數來初始化對應至選擇性自變數的屬性。

換句話說,不要有可以同時使用建構函式和 setter 來設定的屬性。 此指導方針會明確說明哪些自變數是選擇性的,需要哪些自變數,並避免有兩種方式執行相同動作。

❌ 避免多載自定義屬性建構函式。

只有一個建構函式會清楚傳達給使用者需要哪些自變數,以及哪些是選擇性的。

✔️ 請盡可能封存自定義屬性類別。 這能使查找屬性更快。

© 2005年、2009年Microsoft公司部分。 保留所有權利。

經 Pearson Education, Inc. 許可重新刊登自 Krzysztof Cwalina 和 Brad Abrams 所著的 架構設計指導方針: 可重複使用的 .NET 程式庫慣例、慣用語和模式,第 2 版,2008 年 10 月 22 日由 Addison-Wesley Professional 發行,作為 Microsoft Windows 開發系列的一部分。

另請參閱