Question

Après avoir lutté avec un tas d'exceptions non interceptées lors de sérialisation mes classes et sous-classes, je l'ai enfin compris ce que mon problème était: [Serializable] n'est pas héritée par les sous-classes lorsqu'elle est appliquée à une classe de base. Je suis encore très floue sur les C # Attributs en général, mais je comprends que lors de la création d'un attribut personnalisé, le programmeur peut activer l'héritage automatique de l'attribut.

Il y un moyen de passer outre l'héritage de [Serializable]? Y at-il une bonne raison pour laquelle il n'a pas été fait depuis le début et / ou serait une mauvaise idée de le faire en premier lieu? Je veux que tous les sous-classes de ladite classe de base soit sérialisable, il semble donc juste inélégante devoir ajouter l'attribut à toute nouvelle sous-classes que je fais.

Merci!

Était-ce utile?

La solution

Il est tout à fait une bonne raison, il n'a pas été fait en premier lieu -. Juste parce qu'une classe de base est sérialisable ne signifie pas qu'une classe dérivée est naturellement

Heck, object est sérialisable - si sérialisation ont hérité, cela signifierait toutes les classes .NET serait sérialisable:)

Vous ne pouvez pas « override » que ce soit - vous devez indiquer sur toutes les classes. Je pense que c'est une bonne chose, en fait - lorsque vous ajoutez l'attribut, vous devez effectuer un contrôle mental sur la classe et vérifier que vraiment ne faire sens le sérialiser

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top