2009-04-06 2 views
0

Ich verwende NHibernate, um meine Entitäten zu verwalten, und um das Lazy Loading zu aktivieren, muss meine Eigenschaften eine IList <> zurückgeben. Problem ist, dass .NET eine Ausnahme auslöst, da es eine Schnittstelle nicht serialisieren kann, wenn ich versuche, die Entität zu übergeben. Das macht Sinn.Ermitteln der zu serialisierenden Eigenschaften in einer Klasse, die über einen Webservice weitergegeben wird

Was ich wissen muss ist, wie kann ich steuern, welche Felder zu serialisieren, und welche nicht? Meine beste Wette ist bisher, dieses Problem zu umgehen, indem ich den Inhalt von IList <> in eine Liste <> kopiere, bevor ich das Objekt serialisiere, aber dazu muss ich .NET sagen, dass ich die Eigenschaft IList <> nicht möchte serialisiert :)

+0

Nur für Klarheit gefunden: nicht Serialisierung IList ist ein Fehler in XmlSerializer. Wenn Sie dazu in der Lage sind, wechseln Sie zu WCF oder ersetzen Sie den Serializator durch DataContractSerializer. – boj

+0

Kann nicht zu WCF wechseln, da es Teil einer Schulaufgabe ist, wo die Anforderungen angeben, dass wir einen "normalen Webservice" benötigen :) – cwap

+0

WCF _ist_ normale Webservices! WCF ist der Ersatz für die alten ASMX-Webdienste. Wenn der Lehrer das nicht mag, lass mich mit mir reden! –

Antwort

1

Ich wollte euch wissen lassen, dass ich die Antwort auf sein die [System.Xml.Serialization.XmlIgnore] Attribut :)

-1

MSDN hat eine Fläche auf Serializing Objects, aber was Sie wollen, ist Selective Serialization. Sie können also jede Eigenschaft, die nicht serialisiert werden soll, mit dem Attribut [NonSerialized] markieren. Es gibt ein Beispiel in der zweiten Verbindung.

+0

Vielen Dank .. Sie haben mir sehr geholfen, aber das korrekte Attribut war System.Xml.Serialization. XmlIgnore, die ich in einer neuen Antwort für weitere Referenz veröffentlichen werde. – cwap

+0

Ihre Begrüßung. Ich hätte fragen sollen, ob Sie eine Binär- oder XML-Serialisierung durchführen. Es ist lange her, seit ich Serialisierung in .NET gemacht habe. –

+0

Ich könnte hier falsch liegen, aber da ich einen Webservice verwende, sollte es nicht Soap sein, was wiederum bedeutet, dass es XML-Serialisierung sein muss? : P – cwap

Verwandte Themen