| |
VB.NET - Ein- und UmsteigerSerialisierung mit XML und 2 Classen | | | Autor: FohnBit | Datum: 25.06.11 10:24 |
| Hallo,
ich serialisiere via XML eine Class, welche Arraylists mit wiederum einer Class enthält:
Auszug:<Serializable()> Public Class clsFenster
Implements System.ICloneable
Public Function Clone() As Object Implements System.ICloneable.Clone
Return MyBase.MemberwiseClone
End Function
Public objHintergrundbild As Object
<Xml.Serialization.XmlIgnore()> _
Public Property Hintergrundbild() As Image
Get
Dim strToByte() As Byte
strToByte = objHintergrundbild
If Not strToByte Is Nothing Then
Return Image.FromStream(New System.IO.MemoryStream(strToByte))
End If
Return Nothing
End Get
Set(ByVal Value As Image)
Dim msMemoryStream As New System.IO.MemoryStream()
Value.Save(msMemoryStream, System.Drawing.Imaging.ImageFormat.Png)
Dim myByte(msMemoryStream.Length - 1) As Byte
msMemoryStream.Position = 0 : msMemoryStream.Read(myByte, 0, _
msMemoryStream.Length)
objHintergrundbild = myByte
End Set
End Property
Public objAusrichtungsbild As Object
<Xml.Serialization.XmlIgnore()> _
Public Property Ausrichtungsbild() As Image
Get
Dim strToByte() As Byte
strToByte = objAusrichtungsbild
Return Image.FromStream(New System.IO.MemoryStream(strToByte))
End Get
Set(ByVal Value As Image)
Dim msMemoryStream As New System.IO.MemoryStream()
Value.Save(msMemoryStream, System.Drawing.Imaging.ImageFormat.Png)
Dim myByte(msMemoryStream.Length - 1) As Byte
msMemoryStream.Position = 0 : msMemoryStream.Read(myByte, 0, _
msMemoryStream.Length)
objAusrichtungsbild = myByte
End Set
End Property
Public objHintergrund As Object
<Xml.Serialization.XmlIgnore()> _
Public Property Hintergrund() As Image
Get
Dim strToByte() As Byte
strToByte = objHintergrund
Return Image.FromStream(New System.IO.MemoryStream(strToByte))
End Get
Set(ByVal Value As Image)
Dim msMemoryStream As New System.IO.MemoryStream()
Value.Save(msMemoryStream, System.Drawing.Imaging.ImageFormat.Png)
Dim myByte(msMemoryStream.Length - 1) As Byte
msMemoryStream.Position = 0 : msMemoryStream.Read(myByte, 0, _
msMemoryStream.Length)
objHintergrund = myByte
End Set
End Property
Public Aufnahmedatum As Date
Public Aufnahmezeit As String
Public polygon As New ArrayList
Public vMarker As New clsMarker
End Class
Public Class clsMarker
Public Koordinaten As PointF
Public vAusrichtung As enuAusrichtung
End Class in die Variable vMarker wird mittels .add() ein Objekt der Class clsMarker gelegt.
Das Funktioniert im Code ja auch 1a.
Wenn ich nun aber serialisiere:
Try
Dim ser As XmlSerializer = New XmlSerializer(GetType(clsFenster))
writer = New XmlTextWriter(strFileName, New _
System.Text.UTF8Encoding())
ser.Serialize(writer, vFenster)
writer.Close()
Catch ex As Exception
Throw ex
Finally
End Try schmeißt er mir einen Fehler um die Ohren:
Der Typ Tracker.clsMarker wurde nicht erwartet. Verwenden Sie das XmlInclude- oder das SoapInclude-Attribut, um Typen anzugeben, die nicht statisch sind.
Weiß jemand wie ich das löse?
Danke! | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|