共用方式為


屬性用法方針

更新: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 程式庫的慣例、慣用語法和模式」一書。

請參閱

概念

用法方針

其他資源

開發類別庫的設計方針