l'héritage Redéfinition des attributs intrinsèques en C #
-
27-09-2019 - |
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!
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
.