【问题标题】:.Net framework version in Silverlight: no List<T>.Find methods?Silverlight 中的 .Net 框架版本:没有 List<T>.Find 方法?
【发布时间】:2008-12-03 18:38:55
【问题描述】:

今天我发现了一件让我难过的事情:System.Generic.Collections.List 类型的对象没有很多我喜欢的有用的扩展方法,例如 Find、FindAll、FindIndex、Exists、 RemoveAll 等

VS2008 中的对象浏览器显示这些方法存在于我正在使用的 mscorlib 版本中,但如果我查看 ildasm 中的程序集,它们并不存在。

我是否遗漏了一些明显的东西,或者有什么方法可以让我的 Silverlight 应用程序使用它们?

另外,我想知道 Silverlight 的运行时与“真实”运行时之间的区别是否有很好的参考。

谢谢!

【问题讨论】:

    标签: .net silverlight generics extension-methods


    【解决方案1】:

    这里可能发生的是对象浏览器正在解析为普通的 2.0 mscorlib,而不是用于 silverlight 的版本。

    SilverLight 应用缺少 Find 扩展方法并不令人惊讶。 SilverLight 的 .Net 框架被剥离了很多,以使其足够小以便用户快速下载。他们不得不进行一些艰难的削减,而许多项目没有成功。

    如果您需要该方法,为什么不自己添加呢?添加所有这些可能会在一段时间后变得很累,但它可以用来解决这个问题。

    【讨论】:

    • 如果没有其他选择,我可能会实施我缺少的部分。目前它只是一个单一的方法,所以它不是很多工作,但完全不必这样做会很好:)
    【解决方案2】:

    简单一点:Find 不是扩展方法。这是一个完全正常的实例方法。

    但是,我并不完全惊讶于 Silverlight 中 List&lt;T&gt; 中的“缺失”位。它框架的精简版。不幸的是,我不知道有什么资源可以说明什么进什么出。

    【讨论】:

      【解决方案3】:

      这是一场持久战,兄弟。我将我的 .Net API 和 Silverlight API 书签放在一起,因为我开发了很多 WPF 和 Silverlight 中使用的控件,而且似乎每次我想出一个实现功能的好主意时,我都会运行进入 Silverlight 不支持的基本内容。

      我可以看到会议讨论什么得到了印章。 “我们需要这个 find() 方法做什么?我们有一个非常好的 LINQ 库。没了!”

      Silverlight Reference

      【讨论】:

        【解决方案4】:

        .Exists 在 silverlight 版本中仍然不作为扩展存在

        【讨论】:

          【解决方案5】:

          如果您还没有参考 System.Core 程序集,请参考并执行

          using System.Linq;
          

          对于任何 IEnumerable,您将拥有许多扩展方法,可以做您需要的事情等等。

          Microsoft 显然希望将 Silverlight 运行时保持在较小的下载范围内,从而避免重复实现。

          在泛型和 .NET 2.0 中,原始框架中的很多东西已经过时,在 .NET 3.0 和扩展方法中更多。我想你在 Silverlight 中找到的东西很好地暗示了未来的方向。他们遗漏的东西(比如 System.ComponentModel 中的很多东西)也会在原始框架中被弃用(当然除了服务器/数据库的东西)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-04-03
            • 2011-10-17
            • 1970-01-01
            • 1970-01-01
            • 2011-12-01
            相关资源
            最近更新 更多