특성 개요(Visual Basic)Attributes overview (Visual Basic)

특성은 메타데이터 또는 선언적 정보를 코드(어셈블리, 형식, 메서드, 속성 등)에 연결하는 강력한 방법을 제공합니다.Attributes provide a powerful method of associating metadata, or declarative information, with code (assemblies, types, methods, properties, and so forth). 특성이 프로그램 엔터티와 연결되면 리플렉션이라는 기법을 사용하여 런타임에 특성이 쿼리될 수 있습니다.After an attribute is associated with a program entity, the attribute can be queried at run time by using a technique called reflection. 자세한 내용은 리플렉션(Visual Basic)을 참조하세요.For more information, see Reflection (Visual Basic).

특성에는 다음과 같은 속성이 있습니다.Attributes have the following properties:

  • 특성은 프로그램에 메타데이터를 추가합니다.Attributes add metadata to your program. 메타데이터는 프로그램에 정의된 형식에 대한 정보를 의미합니다.Metadata is information about the types defined in a program. 모든 .NET 어셈블리에는 어셈블리에 정의된 형식 및 형식 멤버를 설명하는 지정된 메타데이터 집합이 포함됩니다.All .NET assemblies contain a specified set of metadata that describes the types and type members defined in the assembly. 필요한 추가 정보를 지정하는 사용자 지정 특성을 추가할 수 있습니다.You can add custom attributes to specify any additional information that is required. 자세한 내용은 사용자 지정 특성 만들기(Visual Basic)를 참조하세요.For more information, see, Creating Custom Attributes (Visual Basic).

  • 전체 어셈블리, 모듈 또는 좀 더 작은 프로그램 요소(예: 클래스 및 속성)에 하나 이상의 특성을 적용할 수 있습니다.You can apply one or more attributes to entire assemblies, modules, or smaller program elements such as classes and properties.

  • 메서드 및 속성의 경우와 같은 방식으로 특성은 인수를 수락할 수 있습니다.Attributes can accept arguments in the same way as methods and properties.

  • 프로그램은 리플렉션을 사용하여 자체 메타데이터 또는 다른 프로그램의 메타데이터를 검사할 수 있습니다.Your program can examine its own metadata or the metadata in other programs by using reflection. 자세한 내용은 리플렉션을 사용하여 특성 액세스(Visual Basic)를 참조하세요.For more information, see Accessing Attributes by Using Reflection (Visual Basic).

특성 사용Using Attributes

특정 특성은 유효한 선언 형식이 제한적일 수 있지만 거의 모든 선언에 특성을 사용할 수 있습니다.Attributes can be placed on most any declaration, though a specific attribute might restrict the types of declarations on which it is valid. Visual Basic에서 특성은 꺾쇠 괄호 ()로 묶여 < > 있습니다.In Visual Basic, an attribute is enclosed in angle brackets (< >). 특성은 적용되는 요소 바로 앞에 표시되어야 하며 같은 줄에 위치합니다.It must appear immediately before the element to which it is applied, on the same line.

이 예제에서 SerializableAttribute 특성은 클래스에 특정 특성을 적용하는 데 사용됩니다.In this example, the SerializableAttribute attribute is used to apply a specific characteristic to a class:

<System.Serializable()> Public Class SampleClass
    ' Objects of this type can be serialized.
End Class

DllImportAttribute 특성을 사용하는 메서드는 다음과 같이 선언됩니다.A method with the attribute DllImportAttribute is declared like this:

Imports System.Runtime.InteropServices
<System.Runtime.InteropServices.DllImport("user32.dll")>
Sub SampleMethod()
End Sub

둘 이상의 특성을 하나의 선언에 추가할 수 있습니다.More than one attribute can be placed on a declaration:

Imports System.Runtime.InteropServices
Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub

지정된 엔터티에 대해 일부 특성을 두 번 이상 지정할 수 있습니다.Some attributes can be specified more than once for a given entity. 이러한 다용도 특성의 예로 ConditionalAttribute가 있습니다.An example of such a multiuse attribute is ConditionalAttribute:

<Conditional("DEBUG"), Conditional("TEST1")>
Sub TraceMethod()
End Sub

참고

규칙에 따라 모든 특성 이름은 .NET Framework의 다른 항목과 구분하기 위해 단어 "Attribute"로 끝납니다.By convention, all attribute names end with the word "Attribute" to distinguish them from other items in the .NET Framework. 그러나 코드에서 특성을 사용하는 경우 특성 접미사를 지정할 필요가 없습니다.However, you do not need to specify the attribute suffix when using attributes in code. 예를 들어 [DllImport][DllImportAttribute]와 같지만 DllImportAttribute는 .NET Framework에서 특성의 실제 이름입니다.For example, [DllImport] is equivalent to [DllImportAttribute], but DllImportAttribute is the attribute's actual name in the .NET Framework.

특성 매개 변수Attribute Parameters

많은 특성에는 매개 변수를 위치, 명명되지 않은 또는 명명된 상태의 매개 변수가 있을 수 있습니다.Many attributes have parameters, which can be positional, unnamed, or named. 모든 위치 매개 변수는 특정 순서로 지정해야 하며 생략할 수 없습니다. 명명된 매개 변수는 선택적이며 순서에 관계 없이 지정할 수 있습니다.Any positional parameters must be specified in a certain order and cannot be omitted; named parameters are optional and can be specified in any order. 위치 매개 변수가 가장 먼저 지정됩니다.Positional parameters are specified first. 예를 들어 다음 세 가지 특성은 동급입니다.For example, these three attributes are equivalent:

<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>

첫 번째 매개 변수인 DLL 이름은 위치 매개 변수이므로 항상 맨 먼저 오고 나머지 매개 변수가 지정됩니다.The first parameter, the DLL name, is positional and always comes first; the others are named. 이 경우 명명된 두 매개 변수는 기본적으로 false이므로 생략할 수 있습니다.In this case, both named parameters default to false, so they can be omitted. 기본 매개 변수 값에 대한 자세한 내용은 개별 특성의 설명서를 참조하세요.Refer to the individual attribute's documentation for information on default parameter values.

특성 대상Attribute Targets

특성의 대상은 특성이 적용되는 엔터티입니다.The target of an attribute is the entity to which the attribute applies. 예를 들어 특성은 클래스, 특정 메서드 또는 전체 어셈블리에 적용될 수 있습니다.For example, an attribute may apply to a class, a particular method, or an entire assembly. 기본적으로 특성은 그 앞에 오는 요소에 적용됩니다.By default, an attribute applies to the element that it precedes. 하지만 특성이 메서드, 해당 매개 변수 또는 해당 반환 값 중 어디에 적용될지를 명시적으로 지정할 수 있습니다.But you can also explicitly identify, for example, whether an attribute is applied to a method, or to its parameter, or to its return value.

특성 대상을 명시적으로 식별하려면 다음 구문을 사용합니다.To explicitly identify an attribute target, use the following syntax:

<target : attribute-list>

가능한 target 값 목록은 다음 표에 나와 있습니다.The list of possible target values is shown in the following table.

대상 값Target value 적용 대상Applies to
assembly 전체 어셈블리Entire assembly
module 현재 어셈블리 모듈(Visual Basic 모듈과는 다름)Current assembly module (which is different from a Visual Basic Module)

다음 예제에서는 어셈블리와 모듈에 특성을 적용하는 방법을 보여 줍니다.The following example shows how to apply attributes to assemblies and modules. 자세한 내용은 사용자 지정 특성(Visual Basic)을 참조하세요.For more information, see Common Attributes (Visual Basic).

Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"),
Module: CLSCompliant(True)>

특성의 일반적인 용도Common Uses for Attributes

다음 목록에는 코드에서 특성이 사용되는 일반적인 경우가 나와 있습니다.The following list includes a few of the common uses of attributes in code:

  • SOAP 프로토콜을 통해 메서드를 호출할 수 있음을 나타내기 위해 웹 서비스에서 WebMethod 특성을 사용하여 메서드에 표시.Marking methods using the WebMethod attribute in Web services to indicate that the method should be callable over the SOAP protocol. 자세한 내용은 WebMethodAttribute를 참조하세요.For more information, see WebMethodAttribute.

  • 네이티브 코드와 상호 운용될 경우 메서드 매개 변수를 마샬링하는 방법 설명.Describing how to marshal method parameters when interoperating with native code. 자세한 내용은 MarshalAsAttribute를 참조하세요.For more information, see MarshalAsAttribute.

  • 클래스, 메서드 및 인터페이스에 대한 COM 속성 설명Describing the COM properties for classes, methods, and interfaces.

  • DllImportAttribute 클래스를 사용하는 비관리 코드 호출Calling unmanaged code using the DllImportAttribute class.

  • 제목, 버전, 설명 또는 상표를 기준으로 어셈블리 설명Describing your assembly in terms of title, version, description, or trademark.

  • 지속성을 위해 serialize할 클래스의 멤버 설명Describing which members of a class to serialize for persistence.

  • XML serialization를 위해 클래스 멤버 및 XML 노드 간을 매핑하는 방법 설명Describing how to map between class members and XML nodes for XML serialization.

  • 메서드에 대한 보안 요구 사항 설명Describing the security requirements for methods.

  • 보안을 적용하는 데 사용되는 특징 지정Specifying characteristics used to enforce security.

  • 코드를 쉽게 디버그할 수 있도록 하기 위해 JIT(Just-In-Time) 컴파일러를 통해 최적화 제어Controlling optimizations by the just-in-time (JIT) compiler so the code remains easy to debug.

  • 메서드 호출자에 대한 정보 얻기Obtaining information about the caller to a method.

자세한 내용은 다음을 참조하세요.For more information, see:

참고 항목See also