2010.07.25 13:30 책 정리/Effective C#

이 포스트를 만든 목적

  • 생각하지 않았던 것들은 보다 쉽게 잊어 먹기 때문에

이 포스트의 준비 상황

  • gVim 7.2
  • 정보를 찾기 위한 인터넷 환경

참조 링크

내용

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을 준수하는게 좋겠다.

여담

  • 엄청나게 배 고프다.


posted by 농사를 짓는 게임 프로그래머 최익필
TAG , ,

댓글을 달아 주세요