代码之家  ›  专栏  ›  技术社区  ›  mmacaulay

Silverlight中的.Net框架版本:没有List<T>。找到方法?

  •  4
  • mmacaulay  · 技术社区  · 17 年前

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

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

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

    此外,我想知道是否有一个很好的参考,说明Silverlight的运行时和“真实”运行时之间的区别。

    谢谢!

    5 回复  |  直到 17 年前
        1
  •  5
  •   JaredPar    17 年前

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

    对于SilverLight应用程序缺少find扩展方法,我并不感到惊讶。这个。SilverLight的网络框架被精简了很多,以使其足够小,以便用户快速下载。他们不得不做出一些艰难的削减,许多项目都没有成功。

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

        2
  •  1
  •   Jon Skeet    17 年前

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

    然而,我并不完全惊讶于其中“缺失”了一些 List<T> 在Silverlight中。它 该框架的精简版本。不幸的是,我不知道有什么资源可以说明哪些内容在里面,哪些内容在外面。

        3
  •  1
  •   MojoFilter    17 年前

    这是一场持续的战斗,兄弟。我保留我的。Netneneneba API和Silverlightnenenebb API书签紧挨着,因为我开发了许多WPF和Silverlight中都使用的控件,似乎每次我想出一个实现功能的好主意时,我都会遇到Silverlight不支持的基本内容。

    我只能去开会讨论到底是什么被砍掉了。“我们需要这个find()方法做什么?我们有一个非常好的LINQ库。不见了!”

    Silverlight Reference

        4
  •  1
  •   Raymond de Jong    17 年前

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

        5
  •  0
  •   herzmeister    17 年前

    只需参考系统。如果您还没有进行核心组装,请进行

    using System.Linq;
    

    对于任何IEnumerable,您都有很多扩展方法可以完成您需要的东西,甚至更多。

    微软显然希望保持Silverlight运行时较小的下载空间,从而避免重复实现。

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