2012-04-17 7 views
2

昨夜私がWP7.1でプロトタイプを作成したときにこの問題に遭遇しました。System.Linq.Xmlで複数のノードを選択したときのWindows Phoneの問題

私は私のすべてのデータアクセスのリポジトリとして使用しているクラスライブラリを持っています。このクラスライブラリでは、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"); 

The error...

この問題に関するすべてのヘルプは大歓迎です。私は本当に私のオブジェクトを構築するループの束の代わりにlinq-to-xmlを使いたい。

答えて

1

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

私がToListなどと呼んだ場合、私は期待される結果を得ます。ブレークポイント(前述の例外)中に式を評価しようとすると、このインスタンスにバグや何かがあるはずです。私はデバッガをあまりにも信頼していたと思います:)

1

linq操作を実行して "var"変数に代入すると、本当に何が起きるのですか?実際のデータセットがそれに格納されているわけではありません。 命令からデータにアクセスしようとすると、命令が実行され、データが取得されます。 そのため、ブレークポイントのデータは表示されません。

+1

私はそれが遅延実行であることを理解します。 "リフレッシュ"シンボルの上にカーソルを置くと実行され、通常はオブジェクトを表示できます(他のタイプのプロジェクトで作業している場合)。 WP7とLinq-to-XMLの場合、何らかの理由でブレークポイント中にデータを見ることができませんでした。 –

関連する問題