BaseType, Collctions 등을 관리하는 BCL Team Blog(http://blogs.msdn.com/bclteam/)에 의하면 Non-Generic 컬렉션들은 실버라이트에서 제거된다고 합니다.(http://blogs.msdn.com/bclteam/archive/2007/06/26/non-generic-collections-to-be-removed-from-silverlight-inbar-gazit.aspx)

하지만 기존에 이런 컬렉션을 사용하는 코드를 위해 obsolete 딱지를 붙여준다는 군요. Non-Generic컬렉션을 사용할 경우 컴파일러가 경고를 띄울 겁니다. 이 결정은 System.Collections 네임스페이스 내의 모든 형식에 적용됩니다.
이런 강경한(?) 결정을 내린 이유로는 성능이나 코드의 완성도 면도 있지만 무엇보다 실버라잇은 가벼운 다운로드 사이즈를 유지해야 하기 때문이라는 군요.
왜 Generic 버전의 컬렉션을 사용해야 하는가는 http://blogs.msdn.com/bclteam/archive/2007/06/25/bcl-refresher-converting-the-non-generic-collections-inbar-gazit.aspx 여기를 참고.

다음 타입들은 완전히 제거 될 예정이에요. 혹시라도 이런 타입을 사용한다면 Generic 버전으로 컨버전 하셔야 합니다.
  • ArrayList
  • BitArray
  • CaseInsensitiveComparer
  • CaseInsensitiveHashCodeProvider
  • CollectionBase
  • Comparer
  • CompatibleComparer
  • DictionaryBase
  • EmptyReadOnlyDictionaryInternal
  • Hashtable
  • IHashCodeProvider
  • KeyValuePairs
  • ListDictionaryInternal
  • Queue
  • ReadOnlyCollectionBase
  • SortedList
  • Stack
  • 하지만 대부분의 non-Generic Interface는 유지한다는 군요.
  • IEnumerator
  • IEnumerable
  • ICollection
  • IComparer
  • IDictionary
  • IDictionaryEnumerator
  • DictionaryEntry
  • IEqualityComparer
  • IList
  • 이 결정은 어디까지나 실버라잇에 한 한거고 다음 버전의 .NET Framework(3.5) 등에서 적용될지 여부는 확실치 않은 것 같네요(아마 다른 닷넷에서는 그대로 남겨둘 듯..) 제 경우에는 Generic의 강력함을 좋아하는 편이라 전 닷넷 프레임웍에 적용해버려도 좋다고 생각하지만요.
  • Generic 컬렉션 중에서도 일부 타입은 제거된다고 하는군요.
    Queue<T>, Stack<T>, LinkedList<T> 인데, 이 타입들은 사실List<T>의 변형이기도 하고 각 타입의 구현은 비교적 간단하기 때문에 런타임 용량을 고려하여 제거된다고 해요.

    앗! LinkedList<T>는 가끔 유용하게 쓰던건데... 이건 쬐끔 아쉽네요. 말한대로 구현이 어렵진 않지만요.

    Posted by gongdo

    Submit comment.

    1. Favicon of http://cafe.naver.com/mssilverlight BlogIcon 패러다임 2007.06.29 10:04  comment URL  Edit/Remove  Submit comment.

      컬렉션 구현할때 항상 상속받던 CollectionBase도 포함되어 있네요. Generic별로 신경쓰지 않았는데 중요해 지는군요. ^^

      정보 감사합니다. ^^

      역시 공도님의 포스트는 깊이가 있으세요~~ ^^

    2. Favicon of http://uxkorea.net BlogIcon 준서아빠 2007.07.02 10:48  comment URL  Edit/Remove  Submit comment.

      잘 읽었습니다. 감사합니다.

    3. 켓츄 2007.07.03 09:25  comment URL  Edit/Remove  Submit comment.

      공도님 질문이 있어서 이렇게 글남김니다 ㅜㅜ
      공부하는 학생인데요 ㅜㅜ
      혹시 xaml에 html에서 사용되는 콘트롤들이 동적으로 등록이 되는지 궁금해서 질문 드립니다.
      만약 되면 어떻게 해야 되는지 알려 주세요 ㅜㅜ
      데이터 바인딩이 안되서 미치겠습니다.

      • Favicon of http://gongdo.tistory.com BlogIcon 공도 2007.07.03 14:40  comment URL  Modify/Remove

        HTML에서 사용되는 컨트롤이라면 <INPUT> 시리즈나<TEXTAREA>를 말씀하시는건가요?
        그런거라면 당연히 안되죠.

        XAML은 XAML이고 HTML은 HTML.

        데이터 바인딩은 아직 Silverlight에서 지원하고 있지 않아요. 아직 바인딩쪽은 구현하기가 만만치 않은 작업이네요.