Singletone Objekt in Datei speichern
Hallo,
ist es möglich ein Singleton-Objekt zu "serialisieren" und dann in eine Datei zu speichern ... um es später wieder laden zu können?
wenn ja, wie ist hier die Herangehensweise
Vielen Dank
ist es möglich ein Singleton-Objekt zu "serialisieren" und dann in eine Datei zu speichern ... um es später wieder laden zu können?
wenn ja, wie ist hier die Herangehensweise
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 365337
Url: https://administrator.de/contentid/365337
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
12 Kommentare
Neuester Kommentar
Hi,
wenn man ein Instanz einer Klasse serialisieren kann, dann kann man das Byte Array auch in eine Datei schreiben und von dort wieder laden und die Instanz der Klasse daraus wieder deserialisieren. Ob man eine Klasse serialisieren kann, hängt im Wesentlichen von den verwendeten Datentypen der Member ab.
Ist Deine Frage jetzt wie man generell serialisiert oder wie man speziell ein Singleton-Objekt serialisiert?
E.
wenn man ein Instanz einer Klasse serialisieren kann, dann kann man das Byte Array auch in eine Datei schreiben und von dort wieder laden und die Instanz der Klasse daraus wieder deserialisieren. Ob man eine Klasse serialisieren kann, hängt im Wesentlichen von den verwendeten Datentypen der Member ab.
Ist Deine Frage jetzt wie man generell serialisiert oder wie man speziell ein Singleton-Objekt serialisiert?
E.
Nu vergiss mal das Singleton. Das hat ja m.E. nichts damit zu tun. Es ändert nichts, ob das Objekt nun ein Singleton ist oder nicht. Oder?
Mit u.g. Code kann man Objekte in Byte Arrays "umwandeln" und vice versa.
Aber auch nur dann, wenn alle verwendeten Datentypen innerhalb der Klasse dies unterstützen.
Die Klasse muss als serialisierbar gekennzeichnet sein.
Basic serialization
Object Serialization in the .NET Framework
Mit u.g. Code kann man Objekte in Byte Arrays "umwandeln" und vice versa.
Aber auch nur dann, wenn alle verwendeten Datentypen innerhalb der Klasse dies unterstützen.
Die Klasse muss als serialisierbar gekennzeichnet sein.
Basic serialization
Object Serialization in the .NET Framework
''' <summary>
''' Liefert ein beliebiges Objekt als eindimensionales Byte-Array zurück.
''' </summary>
''' <param name="TheObject">Das zu "übersetzende" Objekt.</param>
''' <returns>Byte-Array</returns>
Public Function ObjectToByteArray(ByVal TheObject As Object) As Byte()
Try
Dim ms As New System.IO.MemoryStream()
Dim bf As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
bf.Serialize(ms, TheObject)
Return ms.ToArray()
Catch Ex As Exception
Return Nothing
End Try
End Function
''' <summary>
''' Liefert ein beliebiges, eindimensionales Byte-Array als Objekt zurück.
''' </summary>
''' <param name="ByteArray">Das zu "übersetzende" Byte-Array.</param>
''' <returns>Object</returns>
Public Function ByteArrayToObject(ByVal ByteArray() As Byte) As Object
Try
Dim ms As New System.IO.MemoryStream(ByteArray)
Dim bf As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
ms.Position = 0
Return bf.Deserialize(ms)
Catch Ex As Exception
Return Nothing
End Try
End Function
Ich kann Dir, offen gestanden, nicht ganz folgen. Bitte post mal auch Teil, wo Du mit "LoadObject" das Objekt wieder lädst.
Wenn ich doch richtig verstanden habe:
Du hast ein Objekt mit "angehängtem" Eventhandler. Dieses serialisierst Du und speicherst es in eine Datei.
Beim erneuten Start deserialisierst dieses Objekt wieder aus dieser Datei und der Eventhandler funktioniert jetzt nicht?
Falls ja:
Das ist logisch. Wenn Du ein Objekt deserialisierst, dann ist das hinterher nicht mehr das selbe Objekt sondern ein neues, welches bloß die Eigenschaften des alten bekommen hat. Auch der Eventhandler ist jetzt ein anderer. Du müsstest also nach dem Deserialisieren die Eventhandler erneut "anhängen".
Wenn ich doch richtig verstanden habe:
Du hast ein Objekt mit "angehängtem" Eventhandler. Dieses serialisierst Du und speicherst es in eine Datei.
Beim erneuten Start deserialisierst dieses Objekt wieder aus dieser Datei und der Eventhandler funktioniert jetzt nicht?
Falls ja:
Das ist logisch. Wenn Du ein Objekt deserialisierst, dann ist das hinterher nicht mehr das selbe Objekt sondern ein neues, welches bloß die Eigenschaften des alten bekommen hat. Auch der Eventhandler ist jetzt ein anderer. Du müsstest also nach dem Deserialisieren die Eventhandler erneut "anhängen".
Ich muss blind sein ...
Welches Zusammenspiel?
Aber egal, ich bin raus.
Die Lösung für Dein eigentliches Serialiserungsproblem hast Du von mir bekommen, auch wenn nicht so von Dir markiert.
Viel Erfolg!
weiß jemand warum das Zusammenspiel mit der Oberfläche nicht mehr richtig arbeitet?
Welcher Oberfläche?Welches Zusammenspiel?
Wie mach ich das?
muss ich da für jedes Feld agieren, oder kann ich das irgendwie Automatisieren?
Wie soll ich das beantworten, wenn ich nicht weiß, was Du da wie verlinkt hast?muss ich da für jedes Feld agieren, oder kann ich das irgendwie Automatisieren?
Aber egal, ich bin raus.
Die Lösung für Dein eigentliches Serialiserungsproblem hast Du von mir bekommen, auch wenn nicht so von Dir markiert.
Viel Erfolg!