특성은 메타데이터 또는 선언적 정보를 코드(어셈블리, 형식, 메서드, 속성 등)와 연결하기 위한 강력한 메서드를 제공합니다. 특성이 프로그램 엔터티와 연결되면 리플렉션 기술을 사용하여 런타임에 특성을 쿼리할 수 있습니다. 자세한 내용은 리플렉션(Visual Basic)을 참조하세요.
특성에는 다음과 같은 속성이 있습니다.
특성은 프로그램에 메타데이터를 추가합니다. 메타데이터 프로그램에 정의된 형식에 대한 정보입니다. 모든 .NET 어셈블리에는 어셈블리에 정의된 형식 및 형식 멤버를 설명하는 지정된 메타데이터 집합이 포함되어 있습니다. 사용자 지정 특성을 추가하여 필요한 추가 정보를 지정할 수 있습니다. 자세한 내용은 사용자 지정 특성 만들기(Visual Basic)를 참조하세요.
전체 어셈블리, 모듈 또는 클래스 및 속성과 같은 더 작은 프로그램 요소에 하나 이상의 특성을 적용할 수 있습니다.
특성은 메서드 및 속성과 동일한 방식으로 인수를 수락할 수 있습니다.
프로그램은 리플렉션을 사용하여 다른 프로그램의 자체 메타데이터 또는 메타데이터를 검사할 수 있습니다. 자세한 내용은 리플렉션을 사용하여 특성 액세스(Visual Basic)를 참조하세요.
특성 사용
특성은 대부분의 선언에 배치할 수 있지만 특정 특성은 유효한 선언 형식을 제한할 수 있습니다. Visual Basic에서 특성은 꺾쇠 괄호(<>)로 묶입니다. 적용된 요소 바로 앞에 동일한 줄에 나타나야 합니다.
이 예제에서 SerializableAttribute 특성은 클래스에 특정 특성을 적용하는 데 사용됩니다.
<System.Serializable()> Public Class SampleClass
' Objects of this type can be serialized.
End Class
특성 DllImportAttribute 이 있는 메서드는 다음과 같이 선언됩니다.
Imports System.Runtime.InteropServices
<System.Runtime.InteropServices.DllImport("user32.dll")>
Sub SampleMethod()
End Sub
선언에 둘 이상의 특성을 배치할 수 있습니다.
Imports System.Runtime.InteropServices
Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub
일부 특성은 지정된 엔터티에 대해 두 번 이상 지정할 수 있습니다. 이러한 다중 사용 특성의 예는 다음과 ConditionalAttribute.
<Conditional("DEBUG"), Conditional("TEST1")>
Sub TraceMethod()
End Sub
비고
규칙에 따라 모든 특성 이름은 "특성"이라는 단어로 끝나 .NET Framework의 다른 항목과 구분됩니다. 그러나 코드에서 특성을 사용할 때는 특성 접미사를 지정할 필요가 없습니다. 예를 들어, `[DllImport]
`는 `[DllImportAttribute]
`와 동일하지만 .NET Framework에서는 `DllImportAttribute
`가 그 특성의 실제 이름입니다.
특성 매개 변수
많은 특성에는 위치, 명명되지 않은 또는 명명될 수 있는 매개 변수가 있습니다. 위치 매개 변수는 특정 순서로 지정해야 하며 생략할 수 없습니다. 명명된 매개 변수는 선택 사항이며 임의의 순서로 지정할 수 있습니다. 위치 매개 변수가 먼저 지정됩니다. 예를 들어 다음 세 가지 특성은 동일합니다.
<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>
첫 번째 매개 변수인 DLL 이름은 위치 기반이며 항상 먼저 제공됩니다. 다른 매개 변수들은 이름이 지정됩니다. 이 경우 명명된 매개 변수는 모두 false로 기본 설정되므로 생략할 수 있습니다. 기본 매개 변수 값에 대한 자세한 내용은 개별 특성 설명서를 참조하세요.
특성 대상
특성의 대상 은 특성이 적용되는 엔터티입니다. 예를 들어 특성은 클래스, 특정 메서드 또는 전체 어셈블리에 적용될 수 있습니다. 기본적으로 특성은 앞에 오는 요소에 적용됩니다. 그러나 예를 들어 특성이 메서드에 적용되는지, 매개 변수에 적용되는지 또는 반환 값에 적용되는지 여부를 명시적으로 식별할 수도 있습니다.
특성 대상을 명시적으로 식별하려면 다음 구문을 사용합니다.
<target : attribute-list>
가능한 target
값 목록은 다음 표에 나와 있습니다.
대상 값 | 적용 대상 |
---|---|
assembly |
전체 조립체 |
module |
현재 어셈블리 모듈(Visual Basic 모듈과 다른) |
다음 예제에서는 어셈블리 및 모듈에 특성을 적용하는 방법을 보여 줍니다. 자세한 내용은 공통 특성(Visual Basic)을 참조하세요.
Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"),
Module: CLSCompliant(True)>
특성에 대한 일반적인 사용
다음 목록에는 코드에서 특성의 몇 가지 일반적인 용도가 포함되어 있습니다.
웹 서비스에서
WebMethod
특성을 사용하여 메서드를 표시하여 SOAP 프로토콜을 통해 메서드를 호출할 수 있어야 함을 나타냅니다. 자세한 내용은 WebMethodAttribute를 참조하세요.네이티브 코드와 상호 운용할 때 메서드 매개 변수를 마샬링하는 방법을 설명합니다. 자세한 내용은 MarshalAsAttribute를 참조하세요.
클래스, 메서드 및 인터페이스에 대한 COM 속성을 설명합니다.
DllImportAttribute 클래스를 사용하여 관리되지 않는 코드 호출
타이틀, 버전, 설명 또는 상표 측면에서 어셈블리를 설명합니다.
지속성을 위해 serialize할 클래스의 멤버를 설명합니다.
XML serialization을 위해 클래스 멤버와 XML 노드 간에 매핑하는 방법을 설명합니다.
메서드에 대한 보안 요구 사항을 설명합니다.
보안을 적용하는 데 사용되는 특성을 지정합니다.
코드를 디버그하기 쉽게 유지하도록 JIT(Just-In-Time) 컴파일러를 통해 최적화를 제어합니다.
메서드 호출자에 대한 정보를 가져옵니다.
관련 섹션
자세한 내용은 다음을 참조하세요.
참고하십시오
.NET