4

今日、私は悲しいことに気づきました: System.Generic.Collections.List 型のオブジェクトには、私が愛するようになった便利な拡張メソッド (Find、FindAll、FindIndex、Exists、RemoveAll など) がいくつかありません。 .

VS2008 のオブジェクト ブラウザは、私が使用している mscorlib バージョンにこれらのメソッドが存在することを示していますが、ildasm でアセンブリを見ると、それらは存在しません。

ここで明らかな何かが欠けていますか、それとも Silverlight アプリでそれらを利用できるようにする方法はありますか?

また、Silverlight のランタイムと「実際の」ランタイムの違いについて、適切なリファレンスがあるかどうか疑問に思います。

ありがとう!

4

5 に答える 5

5

ここで発生している可能性があるのは、オブジェクト ブラウザーが、Silverlight に使用されるバージョンではなく、通常の 2.0 mscorlib に解決されていることです。

SilverLight アプリに Find 拡張メソッドがないことは驚くべきことではありません。SilverLight の .Net フレームワークは、ユーザーがすばやくダウンロードできるように十分に小さくするために、大幅に簡素化されています。彼らはいくつかのハードカットをしなければならず、多くのアイテムがうまくいきませんでした.

ただし、メソッドが必要な場合は、自分で追加してみませんか? それらをすべて追加すると、しばらくすると面倒になるかもしれませんが、この問題を回避するために使用できます。

于 2008-12-03T18:43:55.510 に答える
1

それでも、.ExistsはSilverlightバージョンの拡張子として存在しません

于 2009-06-29T11:34:00.923 に答える
1

1 つの簡単なポイント:Findは拡張メソッドではありません。これは完全に通常のインスタンス メソッドです。

List<T>ただし、 Silverlight に「欠けている」ビットがあることはまったく驚くことではありません。フレームワークの縮小版です。残念ながら、私は何が入っていて何が出ているかを言うためのリソースを知りません.

于 2008-12-03T18:56:57.417 に答える
1

それは絶え間ない戦いです、兄弟。私は .Net API と Silverlight API のブックマークを隣同士に置いています。なぜなら、私は WPF と Silverlight の両方で使用される多くのコントロールを開発しており、機能を実装するための良いアイデアを思いつくたびに実行しているように思えるからです。 Silverlight でサポートされていない基本的なものに変換されます。

何がチョップになったかを話し合う会議を見ることができます。「この find() メソッドは何のために必要なのですか? 完璧に優れた LINQ ライブラリを手に入れました。もう終わりです!」

Silverlight リファレンス

于 2008-12-03T19:09:20.187 に答える
0

System.Core アセンブリをまだ参照していない場合は参照してください。

using System.Linq;

また、任意の IEnumerable については、必要なことなどを実行できる拡張メソッドが多数あります。

Microsoft は明らかに、Silverlight ランタイムをダウンロード用に小さく保ち、実装の重複を避けたいと考えています。

元のフレームワークの多くのものは、Generics と .NET 2.0 で既に時代遅れになり、さらに .NET 3.0 と拡張メソッドで廃止されました。Silverlight で見つけたものは、今後の方向性についての良いヒントになると思います。彼らが残したもの(System.ComponentModelの多くのものと同様)は、元のフレームワークでも非推奨になります(もちろんサーバー/データベースのものを除く)。

于 2009-06-23T14:37:15.170 に答える