2008-12-03 2 views
4

오늘 나는 나를 슬프게하는 것을 발견했습니다. System.Generic.Collections.List 유형의 객체에는 Find, FindAll, FindIndex, Exists, RemoveAll 등 내가 좋아할만한 유용한 확장 메소드가 없습니다. 등. Silverlight의 .NET Framework 버전 : 아니요 목록 <T>.Find 메서드?

VS2008의 개체 브라우저는 내가 사용하고있는 mscorlib 버전에 해당 메서드가 있음을 보여줍니다. 그러나 ildasm에서 어셈블리를 보면 거기에 없습니다.

여기에 확실한 정보가 없거나 Silverlight 앱에서 사용할 수있는 방법이 있습니까?

또한 Silverlight의 런타임과 "실제"런타임 간의 차이점에 대한 좋은 참조가 있는지 궁금합니다.

감사합니다.

답변

5

여기서 일어날 수있는 일은 개체 브라우저가 실버 라이트 용 버전 대신 표준 2.0 mscorlib로 확인된다는 것입니다.

SilverLight 앱에 대한 찾기 확장 방법이 없다는 사실이 놀랍습니다. SilverLight의 .Net 프레임 워크는 사용자를 위해 신속하게 다운로드 할 수있을만큼 작게 만들기 위해 꽤 멀리 떨어져 있습니다. 그들은 힘든 삭감을해야했고 많은 아이템들이 그것을 만들지 않았습니다.

그래도 필요하다면 직접 추가하지 않으시겠습니까? 모두 추가하면 잠시 후 피로감을 느끼지만이 문제를 해결하는 데 사용할 수 있습니다.

+0

대체 방법이 없다면 실종 될 것입니다. 현재는 단 하나의 방법 일 뿐이므로 많은 작업이 아니지만, 전혀하지 않아도됩니다. :) – mmacaulay

1

단 하나의 빠른 포인트 : Find은 확장 방법이 아닙니다. 그것은 완벽하게 정상적인 인스턴스 메소드입니다.

그러나 Silverlight에서 List<T>의 비트가 "없다"는 것이 전혀 놀랍지는 않습니다. 은 프레임 워크의 축소 버전 인입니다. 불행하게도 나는 무엇이 있고 무엇이 있는지 말할 수있는 어떠한 자원도 모른다.

1

그것은 끊임없는 전투입니다. WPF와 Silverlight에서 많이 사용되는 컨트롤을 개발하고 기능을 구현할 때마다 좋은 생각이 떠 올랐기 때문에 .NET API와 Silverlight API 책갈피를 서로 바로 옆에 유지합니다. Silverlight에서 지원되지 않는 근본적인 무언가로.

나는 그 회의를 가지고 무엇을 논의 할 회의를 볼 수 있습니다. "find() 메서드가 필요한 이유는 무엇입니까? LINQ 라이브러리가 완벽하게 제공됩니다. 사라졌습니다!" 당신이 아직이 있고

using System.Linq; 

을하고있는 IEnumerable을 위해, 당신은 물건을 당신이 할 수있는 확장 방법을 많이해야합니다 경우

Silverlight Reference

0

그냥 System.Core 어셈블리를 참조 필요 이상.

Microsoft는 분명 Silverlight 런타임을 다운로드 용으로 작게 유지하여 중복 구현을 피하고자합니다.

원본 프레임 워크에있는 많은 것들이 이미 Generics 및 .NET 2.0에서 폐기되었으며 .NET 3.0 및 확장 메서드가 더 많이 사용되었습니다. Silverlight에서 찾은 내용은 향후 방향에 대한 좋은 힌트입니다. 그들이 남긴 내용 (시스템의 많은 것들처럼.ComponentModel)은 원래의 프레임 워크에서 다소 비참하게 될 것입니다 (당연히 서버/데이터베이스 항목 제외).

1

실버 라이트 버전에서 .Exists는 확장자로 존재하지 않습니다.