2010-07-01 67 views

回答

3

编译器生成的enumerable没有应用[Serializable]属性,所以,不,开箱即用,你不能这样做。

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

如果方便,您可以使用它来填充可序列化的类型。如果你用它懒散地执行一些繁重的工作,你可能需要考虑改变你的设计以序列化或反序列化你需要执行的繁重工作。

+2

这其实并不完全正确。我曾经认为你不能,但你可以使用代理序列化到有趣的效果,同时仍然保留相当通用的代码。查看示例代码:http://dotnet.agilekiwi.com/blog/2007/05/implementing-workflow-with-persistent.html – 2012-05-29 00:15:46

0

只需迭代枚举器并序列化每个返回的实例即可。

3

您使用哪个课程实施IEnumerable<T>List<T>应该序列化好。

尝试在序列化之前在您的集合上调用ToList()

+0

+1简单的解决方案。 – Tyrsius 2012-08-20 23:23:24