屬性用法方針
更新:2007 年 11 月
.NET Framework 可以讓開發人員發明新類型的宣告性資訊、為各種程式實體 (Entity) 指定宣告性資訊,以及擷取執行階段環境中的屬性資訊。例如,架構能定義可以放置在程式項目 (如類別和方法) 上的 HelpAttribute 屬性,以提供程式項目和其文件之間的對應。新類型的宣告性資料是透過屬性類別的宣告所定義的,可能會有位置和命名的參數。如需屬性的詳細資訊,請參閱撰寫自訂屬性。
下列規則概述屬性類別的用法方針:
將 Attribute 後置字元加到自訂屬性類別,如下列範例所示。
Public Class ObsoleteAttribute{}
public class ObsoleteAttribute{}
在您的屬性上指定 AttributeUsage,以明確定義它們的用法,如下列範例所示。
<AttributeUsage(AttributeTargets.All, Inherited := False, AllowMultiple := True)> _ Public Class ObsoleteAttribute Inherits Attribute ' Insert code here. End Class
[AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)] public class ObsoleteAttribute: Attribute {}
如果有的話,將屬性類別密封,如此類別就無法繼承自它們。
為必要的參數使用位置引數 (建構函式參數)。提供和每個位置性引數同名的唯讀屬性,但變更大小寫以區分它們。這樣可以在執行階段時存取引數。
針對選擇性參數使用具名引數,並針對每個具名引數提供讀取/寫入屬性。
不要同時以具名引數和位置引數來定義參數。下列程式碼範例說明這個模式。
Public Class NameAttribute Inherits Attribute Private userNameValue as String Private ageValue as Integer ' This is a positional argument. Public Sub New(userName As String) userNameValue = userName End Sub Public ReadOnly Property UserName() As String Get Return userNameValue End Get End Property ' This is a named argument. Public Property Age() As Integer Get Return ageValue End Get Set ageValue = value End Set End Property End Class
public class NameAttribute: Attribute { string userName; int age; // This is a positional argument. public NameAttribute (string userName) { this.userName = userName; } public string UserName { get { return userName; } } // This is a named argument. public int Age { get { return age; } set { age = value; } } }
Portions Copyright 2005 Microsoft Corporation.All rights reserved.
Portions Copyright Addison-Wesley Corporation.All rights reserved.
如需設計方針的詳細資訊,請參閱由 Krzysztof Cwalina 和 Brad Abrams 所著,並由 Addison-Wesley 於 2005 年發行的「Framework 設計方針:可重複使用之 .NET 程式庫的慣例、慣用語法和模式」一書。