Si quelque chose hérite d'une classe sérialisable, la classe enfant est-elle toujours sérialisable?Héritage sérialisable
Répondre
Cela dépend de ce que vous voulez dire être sérialisable. Si vous voulez dire le marqueur CLI (c'est-à-dire l'attribut [Serializable]
), alors c'est et non hérité (preuve ci-dessous). Vous devez marquer explicitement chaque classe dérivée comme [Serializable]
. Si, cependant, vous voulez dire l'interface, alors oui: les implémentations d'interface sont héritées, mais vous devez être prudent - par exemple en utilisant une méthode virtual
afin que les classes dérivées puissent contribuer leurs données à la sérialisation.
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 {}
Les attributs, par nature, ne sont pas hérités. En outre, une classe ne peut pas être considérée comme héritant d'un attribut. Ergo, les attributs n'ont rien à voir avec la question du PO. – NotMe
Désolé, mais vous avez tort. Les attributs * do * se rapportent à la question; l'attribut [Serializable] est l'un de ceux que le compilateur gère différemment: il l'utilise pour définir l'indicateur "serializable" sur la classe CLI (si vous vérifiez l'IL, il jette réellement l'attribut à ce stade). –
De même, je n'ai jamais rien dit de la classe héritant d'un attribut - bien qu'en réalité, puisque les attributs * sont * classes, et que les attributs puissent hériter les uns des autres, une classe d'attribut hérite beaucoup d'un attribut ... –
- 1. protobuf.net non sérialisable
- 2. java.lang.IllegalArgumentException: setAttribute: Attribut non sérialisable
- 3. Imposer la propriété d'objets sérialisable
- 4. Java: Utiliser ObjectOutputStream sans sérialisable
- 5. HAML Héritage
- 6. Héritage CGAL
- 7. Héritage Javascript
- 8. héritage virtuel
- 9. Héritage/Architecture
- 10. Génériques, héritage et diffusion
- 11. Héritage de balise personnalisé.
- 12. C# UserControl Héritage
- 13. Héritage ordre de libération?
- 14. C# héritage ToString
- 15. Java multithreading et héritage
- 16. javascript, héritage de l'événement
- 17. MVC modèle/héritage modèle
- 18. Javascript 'propriété héritage'
- 19. Héritage NHibernate/NHibernate Question
- 20. Héritage de ListViewItemCollection
- 21. C++ Héritage/questions VTable
- 22. C++ Modèles et héritage
- 23. Héritage et associations
- 24. python héritage attribut class
- 25. héritage dans l'objectif C
- 26. héritage Désallocation, C++
- 27. ASP.NET héritage de page
- 28. Héritage du style CSS
- 29. Héritage des annotations Hibernate?
- 30. Nhibernate et héritage pluggable
De plus, cette question est ambiguë –