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

Silverlight中的.NET Framework版本:无列表。是否查找方法?

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

    今天,我发现了一些让我难过的东西:System.Generic.Collections.List类型的对象没有我喜欢的一些有用的扩展方法,比如find、findall、findindex、exists、removeall等。

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

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

    另外,我想知道是否有一个很好的参考,说明Silverlight的运行时和“真正的”运行时之间有什么不同。

    谢谢!

    5 回复  |  直到 15 年前
        1
  •  5
  •   JaredPar    16 年前

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

    我并不认为Silverlight应用程序缺少find扩展方法。为了使它足够小,能够为用户快速下载,对Silverlight的.NET框架进行了相当大的简化。他们不得不做一些硬切,很多东西都做不到。

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

        2
  •  1
  •   Jon Skeet    16 年前

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

    然而,我并不完全感到惊讶的是, List<T> 在Silverlight中。它 框架的精简版本。不幸的是,我不知道有什么可以说的。

        3
  •  1
  •   MojoFilter    16 年前

    这是一场持续不断的战斗,兄弟。我把我的.NET API和Silverlight API书签放在一起,因为我开发了许多在WPF和Silverlight中都使用的控件,而且每当我想出一个实现某个功能的好主意时,我都会遇到一些Silverlight不支持的基础。

    我可以看一下会议,讨论一下是什么原因造成的。”我们需要这个find()方法做什么?我们有一个非常好的林肯图书馆。不见了!”

    Silverlight Reference

        4
  •  1
  •   Raymond de Jong    15 年前

    .exists在Silverlight版本中仍不作为扩展名存在

        5
  •  0
  •   herzmeister    15 年前

    只需参考系统。如果还没有核心组件,请执行

    using System.Linq;
    

    对于任何IEnumerable,您都将拥有许多扩展方法,可以完成您需要的以及更多的工作。

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

    原始框架中的许多内容已经在泛型和.NET 2.0、.NET 3.0和扩展方法中变得过时。我想你在Silverlight中找到的东西是关于未来方向的一个很好的提示。他们遗漏的内容(如System.ComponentModel中的许多内容)在原始框架中也会变得有点不受欢迎(当然除了服务器/数据库方面的内容)。