Si algo hereda de una clase Serializable, ¿la clase hija todavía se puede serializar?Herencia serializable
Respuesta
Depende de lo que quiera decir ser serializable. Si se refiere al marcador CLI (es decir, el atributo [Serializable]
), este es no heredado (prueba a continuación). Debe marcar explícitamente cada clase derivada como [Serializable]
. Sin embargo, si se refiere a la interfaz ISerializable
, entonces sí: las implementaciones de interfaz se heredan, pero debe tener cuidado, por ejemplo, utilizando un método virtual
para que las clases derivadas puedan contribuir con sus datos a la serialización.
using System;
class Program
{
static void Main()
{
Console.WriteLine(typeof(Foo).IsSerializable); // shows True
Console.WriteLine(typeof(Bar).IsSerializable); // shows False
}
}
[Serializable]
class Foo {}
class Bar : Foo {}
Los atributos, por su naturaleza, no se heredan. Además, no se puede considerar que una clase hereda de un atributo. Ergo, los atributos no tienen nada que ver con la pregunta del OP. – NotMe
Lo siento, pero estás equivocado. Los atributos * do * se relacionan con la pregunta; el atributo [Serializable] es uno de los que el compilador maneja de manera diferente: usa esto para establecer el indicador "serializable" en la clase CLI (si comprueba el IL, realmente descarta el atributo en este punto). –
Igualmente, nunca he dicho nada sobre la clase que hereda de un atributo, aunque en realidad, dado que los atributos * son * clases y los atributos pueden heredarse uno del otro, una clase de atributo hereda mucho de un atributo ... –
- 1. C# serialización/Herencia
- 2. subclase de la clase Serializable padre que no serializable
- 3. ¿Cuál es la diferencia entre scala @Serializable y Java Serializable?
- 4. ¿hay alguna diferencia entre [Serializable] y [Serializable()] en C#?
- 5. ¿Por qué una clase interna serializable no es serializable?
- 6. ¿Por qué java.util.List no implementa Serializable?
- 7. Android Parcelable y Serializable
- 8. Serializable y AnyVal
- 9. ¿Se necesita un atributo serializable en la clase C# concreta?
- 10. ¿Por qué HttpServlet implementa Serializable?
- 11. objeto no es JSON serializable
- 12. ¿Qué es Serializable en Java?
- 13. linqpad y personalizado IPrincipal serializable
- 14. Serializable y DataContract (¿no frente?)
- 15. java.io.NotSerializableException incluso si implemento "Serializable"
- 16. ¿Por qué AtomicInteger implementa Serializable
- 17. Cómo hacer simplejson clase serializable
- 18. ¿Funciona [Serializable] para clases heredadas?
- 19. ¿cómo funciona serializable en Java?
- 20. Herencia y llamadas genéricas GetMethod(). GetReturnType()
- 21. Java objeto serialización y la herencia
- 22. Herencia virtual pura, herencia múltiple, y C4505
- 23. ¿Puedo usar DataContract y Serializable juntos?
- 24. parcelable encontró IOException escribiendo objeto serializable
- 25. Java Serializable, ObjectInputstream, E/S sin bloqueo
- 26. ¿Por qué las interfaces no son [Serializable]?
- 27. Penalización para implementar Serializable en Java?
- 28. ¿MySQL/InnoDB implementa un verdadero aislamiento serializable?
- 29. Prueba si una variable es serializable
- 30. Asignación a tipo Serializable en NHibernate fluido
Además, esta pregunta es ambigua –