C# 如何使用IEnumerable接口,同时让XMLSerializer不使用GetEnumerator()?

C# 如何使用IEnumerable接口,同时让XMLSerializer不使用GetEnumerator()?,c#,.net,xml-serialization,ienumerable,C#,.net,Xml Serialization,Ienumerable,我有一个类可以解析非常大的文件(无法放入内存),我目前正在使用IEnumerable接口来使用foreach,这样我就可以很容易地逐行获取文件的解析内容。目前,我正在尝试使用XMLSerializer将其写入文件。它坚持枚举类,在我的例子中,这意味着将文件的大型解析内容转储到XML中。不管怎样,使用这个接口仍然可以从XMLSerializer中获得“预期”的功能吗 (我之所以称之为“预期”,是因为如果我实现一些集合接口而不是IEnumerable,这似乎是一个预期的结果。也许我对IEnumera

我有一个类可以解析非常大的文件(无法放入内存),我目前正在使用IEnumerable接口来使用foreach,这样我就可以很容易地逐行获取文件的解析内容。目前,我正在尝试使用XMLSerializer将其写入文件。它坚持枚举类,在我的例子中,这意味着将文件的大型解析内容转储到XML中。不管怎样,使用这个接口仍然可以从XMLSerializer中获得“预期”的功能吗


(我之所以称之为“预期”,是因为如果我实现一些集合接口而不是IEnumerable,这似乎是一个预期的结果。也许我对IEnumerable和集合的概念都不正常。:()

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


听起来好像您正在使用同一个类从文件加载数据,并存储该数据的内存表示形式将功能分为两个类。然后只序列化“内存中”类。

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


听起来好像您正在使用同一个类从文件加载数据,并存储该数据的内存表示形式将功能分为两个类。然后只序列化“内存中”类。

好吧,您可以实现
IXmlSerializable
并获得完全控制权。设置是什么并不完全清楚(没有伪代码)-有时
[XmlIgnore]
可以提供帮助,但我不确定在这种情况下,如果没有示例说明您拥有什么,以及您做/不想要什么。

好吧,您可以实现
IXmlSerializable
并获得完全控制权。设置是什么并不完全清楚(没有伪代码)-有时
[XmlIgnore]
可以提供帮助,但如果没有示例说明您拥有什么,以及您做什么/不想做什么,我就不确定了。

我在不改变设计的情况下解决了这个问题。我的代码都不依赖IEnumerable接口,只依赖IEnumerable GetEnumerator()的实现(显然,foreach没有检查IEnumerable是否实现)。只需在类声明中注释掉接口就可以了。

我成功地解决了这个问题,而不必更改我的设计。我的代码都不依赖IEnumerable接口,只依赖IEnumerable GetEnumerator()的实现(显然,foreach不检查IEnumerable是否实现)。只需在类声明中注释掉接口就可以了。

绝妙的解决方案。我也遇到了同样的问题,为了方便起见,我只需要使用枚举数。通过放弃接口实现(但仍然提供我的枚举数)我的序列化再次工作,我仍然可以使用foreach。出色的解决方案。我遇到了同样的问题,我只需要为了方便而使用枚举数。通过删除接口实现(但仍然提供枚举数),我的序列化再次工作,我仍然可以使用foreach。