¿Hay alguna manera de serializar (utilizando BinaryFormatter
) el IEnumerator<T>
que se crea cuando uso yield return
s? La clase autogenerada no está marcada como Serializable
.Serializando el IEnumerator <T> creado usando yield return
Respuesta
El compilador generado enumerable no tiene el atributo [Serializable] aplicado a él, por lo tanto, no, de fábrica no puede hacer esto.
Debe preguntarse, "¿Por qué estoy usando un rendimiento aquí, y qué significa una vez que este objeto se deserializa?"
Si es conveniente, puede usarlo para completar un tipo que se puede serializar. Si lo usa para realizar trabajos pesados de manera perezosa, es posible que desee considerar cambiar su diseño para serializar/deserializar la información que necesita para realizar ese trabajo pesado.
Simplemente itere el enumerador y serialice cada instancia devuelta.
¿Qué clase está utilizando para implementar IEnumerable<T>
? List<T>
debe serializar OK.
Intente llamar al ToList()
en su colección antes de serializarlo.
+1 para una solución simple. – Tyrsius
- 1. yield return versus return select
- 2. Parallel.Foreach + yield return?
- 3. Navegación del asistente con IEnumerable/yield return
- 4. IEnumerable y Recursion using yield return
- 5. ¿El rendimiento es == IEnumerable & IEnumerator?
- 6. ¿Por qué no se puede usar "return" y "yield return" en el mismo método?
- 7. método no se llama cuando se utiliza yield return
- 8. Comportamiento extraño con NUnit, ExpectedException y yield return
- 9. Serializando un campo DataType = "time" usando XmlSerializer
- 10. ¿Por qué IEnumerator <T> hereda de IDisposable mientras que el IEnumerator no genérico no?
- 11. C# yield y try-finally
- 12. Pregunta sobre IEnumerable e IEnumerator
- 13. ¿Hay alguna diferencia entre los métodos del iterador que devuelven IEnumerable <T> y IEnumerator <T>?
- 14. ¿Puedo tener un método que devuelva IEnumerator <T> y usarlo en un bucle foreach?
- 15. C#: IEnumerator <T> en una instrucción using
- 16. ¿Está bien que devuelva IEnumerator <T>. GetEnumerator() en IEnumerator.GetEnumerator()?
- 17. Serializando java.util.Date
- 18. cambio de propiedades de IEnumerator <T> .Current
- 19. IEnumerator Propósito
- 20. IEnumerable & IEnumerator
- 21. ¿El C# Yield libera un bloqueo?
- 22. return unknown Generic List <T>
- 23. Devolver un IEnumerator vacío
- 24. yield return al agregar valores al final de un IEnumerable existente
- 25. serializando un programa Tdws
- 26. ¿Cómo puedo abandonar un IEnumerator sin iterar hasta el final?
- 27. Serializando ExpandoObject con ServiceStack.Text
- 28. ¿Cómo implementaría la interfaz IEnumerator?
- 29. Rieles: usando "content_for" después de la distribución interior correspondiente "yield"
- 30. ¿Cuál es la mejor manera de convertir un IEnumerator a un IEnumerator genérico?
esto no es del todo correcto. Solía pensar que tampoco podías, pero en realidad puedes usar sustitutos para la serialización con un efecto interesante al mismo tiempo que conservas un código bastante genérico. Consulte el código de ejemplo en: http://dotnet.agilekiwi.com/blog/2007/05/implementing-workflow-with-persistent.html –