0

非常に大きなファイル (メモリに収まらない) を解析するクラスがあり、現在、IEnumerable インターフェイスを使用して foreach を使用しているため、解析されたファイルの内容を行ごとに簡単に取得できます。現在、XMLSerializer を使用してこれをファイルに書き込もうとしています。クラスを列挙することを主張します。私の場合、これはファイルの大きな解析済みコンテンツを XML にダンプすることを意味します。このインターフェイスを使用して、XMLSerializer から「期待される」機能を取得する方法はありますか?

(IEnumerable ではなく何らかのコレクション インターフェイスを実装していた場合、これは予想される結果のように見えるため、これを「予想される」と呼ぶだけです。おそらく、IEnumerable とコレクションの私の概念はすべてうまくいきません。:( )

4

3 に答える 3

3

まあ、あなたはIXmlSerializable完全な制御を実装してつかむことができます. セットアップが何であるかは(疑似コードなしで)完全に明確ではありません-時々[XmlIgnore]役立つことがありますが、この場合、あなたが持っているものとあなたがしたい/したくないことの例がなければわかりません。

于 2008-12-17T08:31:11.840 に答える
2

デザインを変更することなく、この問題を解決することができました。私のコードはどれも IEnumerable インターフェイスに依存していませんでした。IEnumerable GetEnumerator() の実装だけです (どうやら、foreach は IEnumerable が実装されているかどうかを確認しません)。クラス宣言でインターフェイスをコメントアウトするだけでうまくいきました。

于 2008-12-19T01:41:49.137 に答える
0

あなたの問題は、より緊密なカプセル化を使用することで解決できるようです。

同じクラスを使用してファイルからデータをロードし、そのデータのメモリ内表現を保存しているように聞こえます。この場合、機能を 2 つのクラスに移動できます (また移動する必要がある場合もあります) 次に、「メモリ内」クラスのみをシリアル化します。

于 2008-12-17T08:29:39.563 に答える