2013년 4월 15일
C++에서는 없던 생소한 C#의 기능! 이번엔 Attribute!
C#으로 짜여진 소스를 보다보면 클래스 위에 "[HTTPGet]"과 같은 형식의 문구를 볼 수가 있다.
나 같은 경우에는 클라이언트로부터 HTTP요청을 받을때 Get으로 받을 경우와 Post로 받을 경우에도 사용하고,
MVC에서 라우팅을 위한 액션 이름을 지정해줄 때도 사용했었는데 그냥 따라 쓰기만 하다가 구체적으로 알고 싶어서 찾아봤다.
우선 간단해보이지만 이 형식 자체가 클래스로 되어 있다.
구현부분을 따라가보면 Attribute 클래스를 상속받은 클래스로 구현되어 있는 것을 볼 수 있다.
클래스명에서 Attribute부분을 제외한 부분이 "[]"부분에 들어가게 되는 것!
클래스 내부에 메소드를 구현해서 메소드 명을 사용할 수도 있다.
이렇게 C#자체에 미리 구현되어 있는 Attribute들도 존재하고 사용자가 직접 만들어서 사용할 수도 있다.
직접 경험해보는 것이 좋을 듯 해서 Test 프로젝트를 만들어봤다.
▲ Attribute 구현부분
▲ Attribute 사용
위에서 [Test("Yongho's Attribute Test")] 부분을 통해 TestAttribute 클래스의 생성자로 스트링을 넘기게 된다.
그러고 나면 Attribute 구현부분에서 m_strName으로 해당 스트링을 셋팅하게 된다.
셋팅한 내용을 추후에 확인해보고 싶거나 이를 이용하여 내용을 구현하는 경우에는
Type객체를 이용하여 Attribute의 내용을 읽어들일 수 있다.
'Programming > C#' 카테고리의 다른 글
[ASP.NET MVC] InputStream의 Position 값 문제.. (0) | 2013.05.20 |
---|---|
[ASP.NET MVC] AsyncController 테스트 (1) | 2013.04.22 |
[ASP.NET MVC] Controller 테스트 (0) | 2013.04.16 |
[C#] 확장 메소드 (1) | 2013.04.15 |
댓글