2016-10-19 25 views
0

Ich habe ein Java-Backend, eine C# -Silverlight-UI, die über SOAP-XML-Nachrichten miteinander kommunizieren. Die Nachricht enthält ein großes Objekt, das viele kleinere Objekte enthält, die viele noch kleinere Objekte enthalten, und so weiter. Mein Ziel ist es, zwei Instanzen dieses Objekts auf der C# -Seite zu haben, eine, die das Original ist, und eine andere, die der Benutzer bearbeiten kann. Ich kann es erreichen, indem ich das Objekt auf C# -Seite tief kopiere, aber es ist ein bisschen kompliziert zu implementieren und langsam. Ich kann zwei gleiche Objekte in der SOAP-XML-Nachricht senden, aber es würde die Ressourcen verschwenden.Lädt eine SOAP-XML-Nachricht in zwei verschiedene C# -Objekte

Konnte ich den Inhalt der gleichen SOAP XML-Nachrichten in zwei verschiedene C# -Objekte laden, die nicht auf die gleiche Verweis verweisen.

Vielen Dank im Voraus

Antwort

0

Sicher, Sie können ...

var myFirstInstance = MyDeserializeMethod(incomingXML); 
var mySecondInstance = MyDeserializeMethod(incomingXML); 

Da es erste deserialisiert wird, um es zu incomingXML keine direkte Referenz - Sie Zuordnung des Objekt, das von MyDeserializeMethod zurückgegeben Dies ist jedes Mal ein anderes Objekt, wenn Sie es ausführen.

+0

Danke für Ihre Antwort, aber ich verwende Attribute für die Serialisierung/Deserialisierung. System.Xml.Serialization.XmlElementAttribute (Order = 0) Gibt es eine Möglichkeit, einen benutzerdefinierten Deserializer in diesem Fall zu schreiben? – user2693979

+0

Der einfachste Weg besteht darin, Klassen einzurichten, die die erwarteten Daten modellieren. Dann können Sie die Deserialisierung automatisch durchführen, indem Sie ein XmlSerializer-Objekt erstellen und mySerializer.Deserialize aufrufen. Dies hat den gleichen Effekt wie das Schreiben einer benutzerdefinierten Methode (was Sie auch tun könnten ...) Hier ist ein Beispiel: http://StackOverflow.com/questions/10518372/how-to-deserialize-xml-to-object –

Verwandte Themen