2010-07-06 7 views
0

J'ai certaines classes proxy générées, qui contiennent des propriétés avec l'attribut XMLAttribute, par ex.Attributs et éléments manquants dans l'objet sérialisé

[System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.egem.nl/StUF/StUF0301")] 
public Verwerkingssoort verwerkingssoort 
{ 
    get 
    { 
     return this.verwerkingssoortField; 
    } 
    set 
    { 
     this.verwerkingssoortField = value; 
    } 
} 

Cependant, cette propriété et plusieurs autres n'apparaissent pas dans le message SOAP. Les proxies ont été générés en utilisant svcutil. Au moment où j'écris cette question, je remarque que les propriétés qui apparaissent en tant qu'attributs sont des chaînes, alors que c'est un Enum (mais je n'ai pas encore fait de vérification approfondie). Est-ce que quelqu'un sait si c'est le problème, ou quoi d'autre pourrait-il être et quelles sont les solutions possibles? Après un peu plus de vérification, j'ai trouvé qu'aucun Enums n'est inclus en tant qu'attribut, mais que Strings et Bools fonctionnent correctement.

Mise à jour 2: Dans un simple case un Enum comme attribut est sérialisé très bien.

Mise à jour 3: Si je remplace XmlAttributeAttribute(...) avec XmlIgnoreAttribute() et ajoutez la propriété suivante:

[System.Xml.Serialization.XmlAttributeAttribute("verwerkingssoort")] 
public string verwerkingssoortString 
{ 
    get 
    { 
     return this.verwerkingssoortField.ToString(); 
    } 
    set 
    { 
     this.verwerkingssoortField = (Verwerkingssoort)System.Enum.Parse(typeof(Verwerkingssoort), value, true); 
    } 
} 

il fonctionne très bien, mais faire des changements comme celui-ci à travers le code généré serait une tâche assez titanesque, et Quand le contrat changera, je devrais recommencer. Donc, je suis toujours à la recherche d'une meilleure solution.

Mise à jour 4: Il s'avère que ce problème n'est pas limité aux attributs. J'ai juste noté qu'une propriété qui devrait être sérialisée à un élément est également omise. Les mêmes choses s'appliquent: c'est un Enum, et ça marche bien si je le change en chaîne.

Merci, salutations,

Miel.

Répondre

0

Avez-vous essayé de définir la propriété Type de la classe XmlAttributeAttribute au type de votre enum?

+0

Lorsque j'essaie cela dans le cas simple référencé, j'obtiens une excpetion (en néerlandais :(), que le Type pour XmlAttribute ne peut pas être donné pour les types primitifs. – Miel

Questions connexes