Fondamentalement, le problème initial est que je dois faire une valeur booléenne sérialisée à 0 ou 1. La solution que j'ai trouvée consistait à implémenter IXmlSerializable, ce que j'ai fait. Malheureusement, la classe que j'essaie de sérialiser est du code généré sur un schéma et a un XmlTypeAttribute dessus. Lorsque je tente de (de) sérialiser l'objet avec le XmlSerializer créé de la manière habituelle (new XmlSerializer(type)
), il lance cette exception:Implémentation d'IXmlSerializable sur une classe générée avec XmlTypeAttribute
System.InvalidOperationException: Only XmlRoot attribute may be specified for the type ______ Please use XmlSchemaProviderAttribute to specify schema type.
Deux possibilités viennent à l'esprit immédiatement:
1) retirer la attribut dans le code généré. Cette modification doit être effectuée chaque fois que le code a été généré à nouveau.
2) Utilisez un objet XmlAttributeOverrides lors de la création du sérialiseur pour supprimer l'attribut. Cela nécessiterait que le reste de la base de code "sache" qu'elle doit remplacer cet attribut. En outre, l'exception lancée ne donne absolument aucune idée de ce qui doit être fait pour le réparer.
Les deux options sont un peu puantes. Y a-t-il une troisième option?
_why_ at-il l'attribut '[XmlType]'? –
C'est juste la façon dont Xsd2Code l'a généré. Dire que le schéma que j'utilise est une bête massive est un euphémisme. Xsd.exe et d'autres outils ont écrasé ou craché 40 Mo de code en utilisant des bibliothèques personnalisées. Pour d'autres raisons, j'ai fini par devoir modifier le code généré. Cependant, s'il y a une troisième solution à ce problème, cela pourrait aussi fonctionner pour l'autre. –