5장 - 1

2014. 11. 21. 00:28IT Books/시작하세요 C# 프로그래밍

C# 1.0


특성 (attribute)


/*

*  author : Someone

*/

public class Everything

{

}


위 코드와 같은 주석을 남겼을때 이 주석은 빌드 과정을 거친 결과물인 exe / dll에는 전혀 남지 않게 된다.

이런 문제를 해결해 주는 것이 특성이다.


닷넷의 어셈블리 파일에는 스스로는 기술하는 메타데이터가 있음

어셈블리 내에서 구현하는 타입, 멤버등의 정보가 메타데이터임.

특성도 이런 메타데이터로 분류.


특성은 사실 클래스.

4장에 나왔던 [Flags] 특성은 FlagsAttribute 라는 클래스.


기본적으로 System.Attribute 클래스에서 파생된다.




정의한 특성의 위 3가지 형식으로 사용이 가능.



다음과 같이 확장도 가능







위와 같이 특성 지정하고 빌드를 한 결과물에는



지정한 값이 그대로 담겨 있다.




이런 특성은 사용할때 적용대상을 지정할 수 있게끔

System.AttributeUsageAttribute 라는 특성을 제공한다.



이런식. 클래스와 메서드에만 적용하겠다는 뜻이다.

특별히 지정하지 않으면 .ALL로 지정된다.



이렇게 type, method와 같이 특성이 적용될 대상을 명시하는 것도 가능하다.



다중 적용도 가능.

기본적으로는 사용할 수 없지만

AttributeUsage 설정에 AllowMultiple 속성을 true로 지정하면 된다.




서로 다른 특성이라면 할 필요 없다.



이렇게 사용.




'IT Books > 시작하세요 C# 프로그래밍' 카테고리의 다른 글

5장 - 3  (0) 2014.11.24
5장 - 2  (0) 2014.11.23
4장 - 3  (0) 2014.11.20
4장 - 2  (0) 2014.11.16
4장 - 1  (0) 2014.11.15