2008-12-03 24 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版本的扩展名不存在