본문 바로가기
[ Program ]/C#

애트리뷰트(Attribute)

by 관이119 2012. 9. 18.
출처 개발자로 살아간다는건... ™ | 카푸치노
원문 http://blog.naver.com/mssql2000/100038715814

절에서 배운 전처리 지시어는 컴파일러에 한정적인 반면 애트리뷰트(Attribute) 컴파일러뿐만 아니라 클래스, 구조체, 메서드 등에 영향을 미치는 범용적인 기능 가지고 있습니다.

정확하게 정의를 내리자면 Attribute 프로그램에 필요한 정보를 제공하는 기능 가지고 있습니다. Attribute 컴파일타임과 런타임 모두 영향을 미칠 있으며 Attribute 정보는 어셈블리(Assembly) 메타데이터(Metadata) 형식으로 저장됩니다.

Attribute 클래스, 구조체, 메서드 등에 정보를 제공한다고 했습니다. , 대부분의 C# 프로그램에서 추가적인 정보로 Attribute 이용할 있다는 것입니다. 여러분은 대괄호([ ]) 둘러싸여 있는 구문을 자주 보게 것입니다. Attribute 일반적인 구문은 대괄호를 이용하여 표시하고 매개변수를 넣어 주는 방법으로 사용됩니다. 다음은 Attribute 프로그램에 사용될 때의 기본적인 구조를 보여주고 있습니다.

Attribute 형식

[attribute("positional_parameter", named_parameter= value, ...)]

[] [RegistryKey(HKEY_CURRENT_USER,"foo")]

q Attribute [ ] 사용하여 묶는다.

q [ ] 안에 Attribute 이름, 지정위치 파라미터와 명명 파라미터를 기입

n 지정위치 파라미터(positional_parameter): 필수적인 정보, 생성자 매개변수에 해당, “ ” 사용하여 값을 기입

n 명명 파라미터(named_parameter): 선택적인 정보, 속성에 해당, ‘=’ 사용하여 멤버필드와 값을 기입

12-8 Attribute 형식

Attribute 크게 내장 Attribute 사용자 정의 Attribute 나눌 있으며 내장 Attribute 현재 나와 있는 것이 198 정도됩니다. 그리고, Attribute들은 모두 sealed 클래스이며 Attribute 클래스를 상속받아서 구현한 것입니다.

Attribute 다양한 곳에 사용되는 것만큼이나 다양한 Attribute들이 제공되고 있습니다. 물론, 사용자가 직접 만들어서 사용한다면 사용자 정의 Attribute이며 일반적으로 C#에서 제공되는 Attribute 내장 Attribute라고 합니다. 내장 Attribute 구분은 다음과 같습니다.

내장 Attribute 네임스페이스명을 기준으로 분류함

q System.ComponentModel 계열

q System.ContextStaticAttribute 계열

q System.Diagnostics 계열

q System.EnterpriseServices 계열

q System.Reflection 계열

q System.Runtime 계열

q System.Security 계열

q System.Web 계열

q System.Xml 계열

12-9 네임스페이스 단위의 Attribute 분류

내장 Attribute 중에서 가장 기본적인 세가지만 알아보겠습니다. 바로 Conditional Obsolete, DllImport Attribute입니다.

댓글