【发布时间】:2011-03-10 20:59:26
【问题描述】:
有没有办法序列化(使用BinaryFormatter)当我使用yield returns 时创建的IEnumerator<T>?自动生成的类未标记为 Serializable。
【问题讨论】:
标签: c# .net serialization yield
有没有办法序列化(使用BinaryFormatter)当我使用yield returns 时创建的IEnumerator<T>?自动生成的类未标记为 Serializable。
【问题讨论】:
标签: c# .net serialization yield
您使用哪个类来实现IEnumerable<T>? List<T> 应该可以序列化了。
在序列化之前尝试在您的集合上调用ToList()。
【讨论】:
编译器生成的 enumerable 没有应用 [Serializable] 属性,所以,不,开箱即用你不能这样做。
你应该问自己,“我为什么在这里使用 yield,这个对象反序列化后意味着什么?”
如果方便的话,你可以用它来填充一个可以序列化的类型。如果您使用它以懒惰的方式执行一些繁重的工作,您可能需要考虑更改您的设计以序列化/反序列化执行该繁重工作所需的信息。
【讨论】:
只需迭代枚举器并序列化返回的每个实例。
【讨论】: