Non, vous ne pouvez pas le faire. Le XmlSerializer utilise un processus de "désabonnement" - il sérialisera tout (toutes les propriétés publiques) à moins que vous n'ayez explicitement désactivé à l'aide de l'attribut [XmlIgnore]
. Il n'y a aucun moyen de changer ce comportement.
Le .NET 3.5 DataContractSerializer prend l'autre approche - opt-in. Il ne sérialisera rien, à moins que vous le disiez spécifiquement, en décorant vos membres avec [DataMember]
.
Alors peut-être que le sérialiseur DataContract fonctionnerait pour vous? C'était un peu plus d'avantages (ne nécessite pas de constructeur sans paramètre, peut également sérialiser les propriétés internes et privées, et peut aussi sérialiser les champs au lieu de propriétés, si nécessaire), et il est réglé pour la vitesse. Il y a aussi des inconvénients - il ne supporte pas les attributs dans les nœuds XML - vous devrez donc choisir en fonction de vos besoins.
Il ya une bonne comparaison des deux par Dan Rigsby - vérifiez-le!
Marc
Non. Il n'y a aucun moyen de le faire. Pourquoi utilisez-vous la sérialisation XML? Quelle version de .NET utilisez-vous? –
.NET 3.5. J'utilise des fichiers XML pour décrire des cinématiques dans un jeu. J'aimerais que ces fichiers XML soient désérialisés en classes/objets correspondants afin que le moteur de jeu puisse exécuter la cinématique. Il y aura aussi une re-sérialisation dans l'éditeur de cutscene. S'il y a une meilleure façon de le faire que XML, je suis ouvert aux suggestions. XML + XMLSerializer permet de modifier et de déboguer facilement les cinématiques à la main, mais aussi de les implémenter et de les utiliser dans le code C#. – morrog