이 포스트를 만든 목적
- 생각하지 않았던 것들은 보다 쉽게 잊어 먹기 때문에
이 포스트의 준비 상황
- gVim 7.2
- 정보를 찾기 위한 인터넷 환경
참조 링크
- http://msdn.microsoft.com/ko-kr/library/bhc3fa7f%28v=VS.80%29.aspx // 한글이지만 무척 어렵다.
- http://golee07.tistory.com/275 // .NET 어셈블리에 대한 기초 동영상 강좌
내용
CLS 란 무엇인가?
- 쉽게 이해하려면, "휴대폰 충전단자 표준화"와 똑같은 맥락이라고 이해하면 된다.
참조 링크 : http://blog.daum.net/obk2030/16512326
- .NET 공용 언어 규격이다.
- 이 규격을 지켜 어셈블리를 만들게 되면, .NET 언어간 어셈블리(DLL 등)을 보다 쉽게 재사용 할 수 있다.
여기서 말하는 .NET 어셈블리란 무엇인가?
- 쉽게 이해하려면, .NET 에서 참조 가능한 DLL 이다.
- 이러한 DLL은, 자신을 표현하기 위한 메타언어를 포함하며, MSIL 로 이루어졌다.
이제부터 책의 내용을 정리해보자.
CLS 을 준수한 어셈블리가 왜 더 좋은가?
간단하게 하나의 프로그램에서만 사용 되는 것이라면, CLS 을 준수를 하던 안하던 별 차이가 없다. 하지만 .NET 언어간, 즉 서로 다른 .NET 언어간 어셈블리를 공유하여 재사용한다면, CLS을 지켜서 만든 .NET 어셈블리가 더 좋다는 것이다. 그 이유는 다음 하나의 이유로 끝난다.
다른 사람이 만든 것, 혹은 내가 만든 것을, 다른 .NET 언어에서 그냥 갖다 쓸 수 있기 때문이다.
어떻게 CLS 을 준수한 .NET 어셈블리를 만들 수 있는가?
CLS 을 준수하려면, public, protected 멤버의 경우만 신경쓰면 된다.
CLS 규격은 다음의 규칙들을 따르면 된다:
- public, protected 멤버는 인자형과 반환형을 반드시 CLS 규격에 준수해야 한다.
- C# 에서 CLSCompliant attribute 를 사용하면 된다. 다음 코드
- public, protected 멤버가 CLS을 준수 하지 않을 경우, CLS을 준수하는 대용 함수라도 재공해야 한다.
- operator+ 연산자 오버로딩은 모든 .NET 언어에서 지원하지 않는다. 그러므로 대용 함수라도 만드는게 좋다.
주의해야 할 사항이 더 있는가?
- 클래스가 CLS을 준수한다고 해도, CLS을 준수하지 않는 어셈블리에선 준수하지 않는 것으로 평가 된다.
결론
- 보여질 것들만 CLS을 준수하는게 좋겠다.
여담
- 엄청나게 배 고프다.
'책 정리 > Effective C#' 카테고리의 다른 글
item 35, 이벤트 핸들러보다 override를 사용하는 편이 낫다. (0) | 2010.08.01 |
---|---|
item 34, 웹 API는 큰 단위로 작성하라 (0) | 2010.08.01 |
item 33, 타입의 가시성을 제한하라. (0) | 2010.08.01 |
item 32, 작고 응집도가 높은 어셈블리가 더 좋다. (0) | 2010.07.31 |
item 31, 작고 단순한 메서드가 더 좋다. (0) | 2010.07.25 |
item 29. 기반 클래스의 변경이 영향을 줄 경우에만 new 한정자를 사용하라. (0) | 2010.07.22 |
item 28, 형변환 연산자의 구현을 피하라 (0) | 2010.07.21 |
item 27, ICloneable의 구현을 피하라 (4) | 2010.07.20 |
item 26, IComparable과 IComparer를 이용하여 순차관계를 구현하라 (6) | 2010.07.19 |
item 25, serializable 타입이 더 좋다. (0) | 2010.07.18 |
최근댓글