0

我有一个类可以解析非常大的文件(无法放入内存),我目前正在使用 IEnumerable 接口来使用 foreach,因此我可以轻松地逐行获取文件的解析内容。目前,我正在尝试使用 XMLSerializer 将其写入文件。它坚持枚举类,在我的例子中,这意味着将大的、已解析的文件内容转储到 XML。无论如何(hackish 或优雅)使用这个接口并且仍然从 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

在我看来,您的问题可以通过使用更紧密的封装来解决。

听起来好像您正在使用同一个类从文件中加载数据,并存储该数据的内存表示。如果是这种情况,您可以(并且可能应该)将该功能移动到两个类中。然后只序列化“内存中”类。

于 2008-12-17T08:29:39.563 回答