2010-11-24 29 views
0

J'utilise l'outil svcutil pour générer un ensemble de proxies pour un wdsl tiers. L'un des types, définis dans un fichier XSD associé utilise xs: tout élément:Svcutil.exe génère la propriété XmlElement pour xsd: n'importe quel élément du schéma

<xs:any namespace="##any" processContents="lax"/> 

Le code produit utilise une propriété de type XmlElement pour représenter ceci:

[System.Xml.Serialization.XmlAnyElementAttribute(Order=0)] 
public System.Xml.XmlElement Any 
{ 
    get 
    { 
     return this.anyField; 
    } 
    set 
    { 
     this.anyField = value; 
    } 
} 

Ce qui a réellement besoin d'aller dans ce champ est l'un des objets fortement typés également générés par l'outil.

Ma question est la suivante: existe-t-il un moyen facile/recommandé de passer d'une instance de l'objet à une instance de XmlElement?

Tout ce que je peux penser est de sérialiser le graphique de l'objet dans un XmlDocument, puis en utilisant cela. Mais cela semble gênant.

Répondre

0

Le code généré est correct pour le schéma. xs: n'importe quel mas à un blob xml. Vous devrez remplacer le schéma de xs: any par le type spécifique si vous souhaitez que le code généré soit plus spécifique. Toutefois, si le schéma n'est pas sous votre contrôle, c'est le seul moyen correct de consommer le schéma. Vous ne pouvez pas supposer qu'un message contient un type spécifique.