2008-12-03 37 views
4

今天,我發現了一些讓我難過:類型System.Generic.Collections.List的對象沒有的一些有用的擴展方法,我來愛,如查找,的FindAll,FindIndex,存在,removeall過等。Silverlight中的.Net框架版本:否列表<T>。查找方法?

在VS2008對象瀏覽器中顯示,在我使用的mscorlib版本存在這些方法,但如果我看組件反彙編他們不存在。

我在這裏丟失了一些明顯的東西,還是有一些方法可以使它們可用於我的Silverlight應用程序?

另外,我不知道是否有一個很好的參考了那裏什麼Silverlight的運行時間和「真實」的一個不同。

謝謝!

回答

5

什麼可能發生在這裏的是,對象瀏覽器解析爲正常的2.0 mscorlib程序,而不是所使用Silverlight的版本。

我不覺得它驚訝SilverLight應用程序的查找擴展方法丟失。 SilverLight的.Net框架已經縮小了很多,以便使其足夠小,以便爲用戶快速下載。他們不得不進行一些強硬的裁減,許多項目都沒有完成。

如果你需要這個方法,爲什麼不自己添加呢?添加所有這些可能會在一段時間後變得疲憊,但它可以用於解決此問題。

+0

如果沒有其他選擇,我可能會實施我失蹤的作品。目前它只是一種方法,所以它不是很多工作,但是不用做就可以了:) – mmacaulay 2008-12-03 18:56:00

1

只需一個快速點:Find不是一種擴展方法。這是一個非常正常的實例方法。

但是,它並不能完全讓我感到吃驚的還有從在Silverlight List<T>位「失蹤」。它是該框架的一個簡化版本。不幸的是,我不知道有什麼資源可以說出什麼是什麼,什麼是什麼。

1

這是一場不斷的戰鬥,兄弟。我將我的.Net API和Silverlight API書籤放在一起,因爲我開發了大量WPF和Silverlight中使用的控件,似乎每次我想出一個實現某個特性的好主意時,我都會運行變成Silverlight中不支持的東西。

我可以看到會議討論是什麼得到了印章。 「我們需要使用find()方法嗎?我們有一個非常好的LINQ庫,完了!」

Silverlight Reference

0

只是參考System.Core程序集,如果你還沒有做一個

using System.Linq; 

和任何IEnumerable的,你將有很多的擴展方法,可以做的東西你需要和更多。

微軟顯然希望保持Silverlight運行時間小,以便下載,從而避免重複的實現。

很多在原框架的東西已經變得過時了與泛型和.NET 2.0,使用.NET 3.0和擴展方法甚至更多。我猜你在Silverlight中找到的東西是關於未來方向的一個很好的暗示。他們遺漏了什麼(像系統中的很多東西。ComponentModel)在原始框架中也會變得有些廢棄(當然除了服務器/數據庫的東西)。

1

仍然存在作爲Silverlight版本的擴展名不存在