2008-12-17 67 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

相关问题