序列化使用yield return创建的IEnumerator <T>

svi*_*ick 5 .net c# serialization yield

有没有办法序列化(使用BinaryFormatter)IEnumerator<T>当我使用yield returns 时创建的?自动生成的类未标记Serializable.

小智 3

编译器生成的枚举没有应用 [Serializable] 属性,因此,不,开箱即用,您不能执行此操作。

你应该问自己,“为什么我在这里使用yield,一旦这个对象被反序列化,它意味着什么?”

如果方便的话,可以用它来填充一个可以序列化的类型。如果您使用它以惰性方式执行一些繁重的工作,您可能需要考虑更改您的设计以序列化/反序列化执行该繁重工作所需的信息。

  • 这其实不太正确。我曾经认为你也不能,但你实际上可以使用代理进行序列化以达到有趣的效果,同时仍然保留相当通用的代码。查看示例代码:http://dotnet.agilekiwi.com/blog/2007/05/implementing-workflow-with-persistent.html (2认同)