2010-11-24 10 views
0

Ich benutze das SVCUTIL-Tool, um eine Reihe von Proxys für eine WDSL von Drittanbietern zu generieren. Eine der Arten, in einer zugehörigen XSD-Datei definiert verwendet die xs: jedes Element:Svcutil.exe generiert XmlElement-Eigenschaft für xsd: beliebiges Element im Schema

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

Der erzeugte Code eine Eigenschaft vom Typ XmlElement verwendet diese darstellen:

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

Was muss eigentlich gehen In diesem Feld befindet sich eines der stark typisierten Objekte, die ebenfalls vom Tool generiert werden.

Meine Frage ist: Gibt es eine einfache/empfohlene Möglichkeit, von einer Instanz des Objekts zu einer Instanz von XmlElement zu gelangen?

Alles, was mir einfällt, ist das Serialisieren des Objektgraphen in ein XmlDocument und dann das Verwenden. Aber das scheint peinlich.

Antwort

0

Der generierte Code ist korrekt für das Schema. xs: Irgendein mas zu einem xml blob. Sie müssen das Schema von xs: any in den spezifischen Typ ändern, wenn der generierte Code spezifischer sein soll.

Wenn jedoch das Schema nicht unter Ihrer Kontrolle ist, ist dies die einzige Möglichkeit, das Schema zu verwenden. Sie können nicht davon ausgehen, dass eine Nachricht einen bestimmten Typ enthält.

Verwandte Themen