2

昨夜、WP7.1 でプロトタイピングを行っていたときに、この問題に遭遇しました。

すべてのデータ アクセスのリポジトリとして使用しているクラス ライブラリがあります。このクラス ライブラリでは、REST 呼び出しを行い、XML を取得しています。すべてがこの時点まで機能しています。返されたストリームから、それを XElement に変換しています。次に、次のようなことをしXElement.Elements()たり、メンバーXElement.Descendents()を見ると次の例外が発生したりします。System.Collections.IEnumerator.Current(なぜこれが表示されるのかはわかりませんが、オブジェクトを展開すると表示されます)

'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' does not contain a definition for 'System' and no extension method 'System' accepting a first argument of type 'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' could be found (are you missing a using directive or an assembly reference?)

この時点で、これは名前空間の問題であると考えているため、次のコードを記述して同じ例外を受け取ります。

var f = new XElement("Foo", new XElement("Bar", 1));
var b = f.Elements("Bar");

エラー...

この問題に関するヘルプは大歓迎です。オブジェクトを構築するために、一連のループの代わりに linq-to-xml を使用したいと思っています。

4

2 に答える 2

1

linq操作を実行して「var」変数に割り当てると、実際に発生するのは、クエリ命令がそこに格納されていることです。実際のデータセットはその上に保存されていません。そこからデータにアクセスしようとすると、命令が実行され、データが取得されます。そのため、ブレークポイントにデータが表示されません。

于 2012-04-18T06:01:44.087 に答える
1

これは、遅延実行で期待どおりに機能していたと思います。

ToListコレクションでa などを呼び出すと、期待どおりの結果が得られます。ブレークポイント(前述の例外)中に式を評価しようとすると、このインスタンスにバグか何かがあるに違いないと思います。私はデバッガーを信頼しすぎていたと思います:)

于 2012-04-17T21:37:23.887 に答える