다음을 통해 공유


특성 사용 지침

.NET Framework에서 개발자는 새로운 종류의 선언적 정보를 고안하고 다양한 프로그램 엔터티에 대해 선언적 정보를 지정하고 런타임 환경에서 특성 정보를 검색할 수 있습니다. 예를 들어, 프레임워크에서는 클래스 및 메서드 등의 프로그램 요소에 놓일 수 있는 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.

디자인 지침에 자세한 내용은 참조를 "Framework 디자인 지침: 규칙, 숙어, 및 재사용에 대 한 패턴입니다.NET 라이브러리"도 서 Krzysztof Cwalina와 Brad Abrams, 게시 Addison-wesley, 2005.

참고 항목

개념

사용 지침

기타 리소스

클래스 라이브러리 개발을 위한 디자인 지침