2010-02-15 4 views
0

Je whould aiment creat un mécanisme de sérialisation, pour travailler sur une variété d'entités, qui sont tous basés sur quelques classes de base. Maintenant je veux travailler avec DataContractSerializer, donc je dois marquer toutes mes classes avec [DataContract]. mais je ne veux pas faire cela parce que c'est une grande marge d'erreur pour les autres membres de mon équipe. Au lieu de cela, je veux placer un attribut singel sur mes classes de base, et ne pas m'inquiéter de tous les cals que j'ajoute. Je préférerais réellement hériter de [DataContract], si jamais je souhaite changer le mécanisme, je devrai changer seulement mon attribut héritant et pas toutes mes classes (il en va de même pour [DataMember]). Maintenant, le problème est que DataContractAttribute est une classe scellée.Comment créer un mécanisme de sérialisation basé sur l'héritage?

J'Imaginée 3 solution, mais je ne sais pas comment mettre en œuvre l'un d'eux ...

Première, j'ai entendu Rommer qu'il ya un moyen d'hériter d'une classe de Seald, qui sera Greate et sauvez-moi un lot de fuzz .

Deuxième, je sais que, avec la réflexion, il est possible de changer une classe dans l'exécution et recompiler retour à l'exécution, donc je pensais créer mon sur l'attribut et à l'exécution de remplacer tout mon attribut personnalisé avec
[ DataContract]

troisième, d'utiliser une sorte d'outil Précompilation qui remplacera mon attribut [DataContract]

donc, si vous avez une idée de comment mettre en œuvre l'une de ces trois (premier et troisième préféré), ou si vous avez une autre idée ce sera génial.

Merci.

+1

Qu'est-ce qui ne va pas avec la sérialisation .NET actuelle? – Ian

+0

Je souhaite que l'attribut de sérialisation soit hérité, [DataContract] n'est pas hérité. –

+0

Bien sûr, DataContract est un attribut hérité. Ce que ce n'est pas inherit_able_ –

Répondre

0

humm .... ne le font pas. juste pas. croyez-moi.

membres de l'équipe de Mentor et utiliser le cadre comme prévu. Vous obtiendrez beaucoup plus de kilométrage.

mot ....

+0

C'est plus que ça. je dois être en mesure de changer le mécanisme reletivly facile, commencer à ajouter \ supprimer \ remplacer tous les ENTITES attribut est juste comlicated et laisser place Mauch d'erreur, je Hava plutôt un endroit cep Code realy méchant que beaucoup d'endroits avec pas si joli code. C'est pourquoi si je pouvais utiliser mon propre attribut je pourrais le définir à la place, l'utiliser partout dans le code, et si je devais le changer dans le futur je pourrais aller spécifiquement à cette définition de classe, et ne pas avoir à tous les singel attribut dans le code ... –

+0

bonne chance avec ça. –

Questions connexes