Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight中的.Net framework版本:无列表<;T>;。找到方法?_.net_Silverlight_Generics_Extension Methods - Fatal编程技术网

Silverlight中的.Net framework版本:无列表<;T>;。找到方法?

Silverlight中的.Net framework版本:无列表<;T>;。找到方法?,.net,silverlight,generics,extension-methods,.net,Silverlight,Generics,Extension Methods,今天,我发现了一些让我伤心的事情:System.Generic.Collections.List类型的对象并没有我喜欢的许多有用的扩展方法,比如Find、FindAll、FindIndex、Exists、RemoveAll等 VS2008中的对象浏览器显示这些方法存在于我使用的mscorlib版本中,但如果我查看ildasm中的程序集,它们就不存在了 我是否遗漏了一些显而易见的东西,或者是否有办法让我的Silverlight应用程序可以使用这些东西 另外,我想知道对于Silverlight的运行

今天,我发现了一些让我伤心的事情:System.Generic.Collections.List类型的对象并没有我喜欢的许多有用的扩展方法,比如Find、FindAll、FindIndex、Exists、RemoveAll等

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

我是否遗漏了一些显而易见的东西,或者是否有办法让我的Silverlight应用程序可以使用这些东西

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


谢谢

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

SilverLight应用程序缺少find扩展方法,我并不感到奇怪。SilverLight的.Net框架被剥离了很多,以使其足够小,用户可以快速下载。他们不得不进行一些艰难的削减,许多项目没有通过


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

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


然而,Silverlight中的
列表
中存在“缺失”位并不完全让我感到惊讶。它是该框架的精简版本。不幸的是,我不知道有什么资源可以说什么是进什么是出。

这是一场持续不断的战斗,兄弟。我将.Net API和Silverlight API书签放在一起,因为我开发了很多WPF和Silverlight中使用的控件,似乎每次我想到一个实现功能的好主意时,我都会遇到一些Silverlight不支持的基本功能

我可以去看会议,讨论一下是什么原因造成的。“我们需要这个find()方法做什么?我们有一个非常好的LINQ库。走了!”


如果还没有,只需参考System.Core组件,然后执行以下操作

using System.Linq;
对于任何IEnumerable,您将拥有许多扩展方法,可以完成您需要的工作,甚至更多

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


原始框架中的许多内容已经在泛型和.NET2.0、.NET3.0以及更多扩展方法中过时。我想你在Silverlight中找到的东西是关于未来方向的一个很好的提示。他们遗漏的东西(比如System.ComponentModel中的很多东西)在最初的框架中也会被弃用(当然除了服务器/数据库的东西)。

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

如果没有其他选择,我可能只会实现我遗漏的部分。目前,它只是一种单一的方法,因此不需要做很多工作,但如果根本不需要这样做就好了:)