2008-12-17 60 views
0

我有一個類來解析非常大的文件(不適合在內存中),我目前正在利用IEnumerable接口來使用foreach,所以我可以輕鬆地逐行獲取文件的解析內容。目前,我正嘗試使用XMLSerializer將其寫入文件。它堅持枚舉類,在我的情況下,這意味着將大量解析的文件內容轉儲到XML中。無論如何(hackish或優雅)使用此接口,仍然從XMLSerializer獲得「預期」功能嗎?如何使用IEnumerable接口並同時讓XMLSerializer不使用GetEnumerator()?

(我只把這種「預期」,因爲這似乎是一個預期結果,如果我實施一些收集接口,而不是IEnumerable的。也許我的IEnumerable的概念和收藏是完全不正常的。:()

回答

2

我設法解決這個問題,而不必改變我的設計。我的代碼都不依賴於IEnumerable接口,只是IEnumerable GetEnumerator()的實現(顯然,foreach不檢查是否實現了IEnumerable)。只需在類聲明中註釋接口就可以了。

+0

輝煌的解決方案。我遇到了同樣的問題,爲了方便,我只需要統計員。通過刪除接口實現(但仍提供我的枚舉器),我的序列化再次工作,我仍然可以使用foreach。 – Chris 2010-01-07 21:58:14

0

它在我看來,你的問題可以通過使用更緊密的封裝來解決。

聽起來好像您使用相同的類從文件加載數據並存儲數據的內存中表示形式。這種情況下,你可能(也可能是應該)將功能移到兩個類中,然後只序列化'內存'類。

3

那麼,你可以執行IXmlSerializable並抓住完全控制。它不是完全清楚(沒有僞代碼)什麼設置 - 有時[XmlIgnore]可以幫助,但我不知道在這種情況下沒有一個例子,你有什麼,你做什麼/不想。

+1

歡呼編輯Jon;今天胖手指;-p – 2008-12-17 15:03:06

相關問題