특성 사용 지침
.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.