Laden...

Konvertierung von Objekten nach Datentypen

Letzter Beitrag vor 15 Jahren 5 Posts 759 Views
Konvertierung von Objekten nach Datentypen

Hallo Community,

ich habe ein Problem bei der Convertierung von Datentypen. Um verschiedene Daten in einer Datei zu speichern, habe ich eine Klasse geschrieben, die alle Datentypen in einen String umwandelt und anschließend in die entsprechende Datei schreibt. Beim Laden des Inhalts soll dieser nun wieder zurück in seine Ursprüngliche Form konvertiert werden.

Hierbei bekomme ich einen Fehler. Der Datentyp System.Drawing.Color lässt sich (logischerweise) ohne Probleme ToString() umwandeln. Wenn ich jetzt nun aber mit


// Nur ein Beispiel. Später weiß ich nicht, welcher Type in der Variable steht.
tConvertType = typeof(Color);
Type.GetType(sStringInhalt, tConvertType, false, true);

umwandle, bekomme ich einen Fehler, weil ich "Color [255, 255, 255, 255]" nicht in ein Color-Objekt umwandeln kann.
Was kann ich da machen? Dabei ist mir nicht wichtig, dass gerade die Konvertierung von String zu Color wieder funktioniert. Hierbei ist der Fehler nur das erste Mal aufgetreten.
Wichtiger wäre es zu wissen, wie speichere ich die Information am Bessen ab und wie kann ich diese dann wieder laden?
[Serialisieren fällt leider weg, weil das nicht bei allen Typen gegeben ist.]

Fällt euch dazu etwas ein?

Mit freundlichem Gruß

Lost-Ha[n]f-PHP

Fällt euch dazu etwas ein?

Jupp, dafür gibt es die Serialisierung von Objekten. Zur Auswahl hast du Xml (XmlSerializer), binär (BinaryFormatter) oder Soap (SoapFormatter). Die können meist mit den Datentypen aus dem .NET Framework umgehen. Eigene Objekte lassen sich über diverse Attribute oder Interfaces entsprechend Serialisieren

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

Nach der Umwandlung in eine Zeichenkette magst du noch die in der ursprünglichen Variable gehaltenen Daten (in Form der Zeichenkette) haben - dir geht aber komplett die Information verloren, um was für Daten es sich handelt. Irgendwie musst du diese Metainformation also mit einbringen.

Stichwort: Serialisierung / Deserialisierung. Vielleicht zu XML, hat den Vorteil, dass die serialisierten Daten noch gut lesbar sind (was du scheinbar möchtest, wenn du schon in Zeichenketten umwandelst).

Gruß,

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

ToString zu benutzen ist sicherlich komfortabel, liefert aber auch so ziemlich immer falsche Werte. ToString liefert eine Stringrepräsentation des Objektes, bei den allermeisten Fällen ist das aber einfach nur der Typname, so ist ToString nämlich bei Objekt implementiert und nicht alle Typen überschreiben die Methode. Die Daten die das Objekt enthält werden meist net ausgegeben, somit kannst du gar nicht mit ToString ein Objekt speichern weil du net weißt was für Daten drin sind. Wenn du diesen Missstand vermeiden kannst, weil du nur eigene Typen benutzt wo du sicherstellen kannst das ToString alle Daten liefert die benötigt werden, dann kannst des benutzen. Bei Color ists halt so dass du den String manuell auseinander nehmen müsstest, die einzelnen Eigenschaften extrahieren und nem Color Objekt zuweisen müsstest.

Baka wa shinanakya naoranai.

Mein XING Profil.

Genau das habe ich auch befürchtet.

Habe das nun auch so umgesetzt, weil jegliche weitere Entwicklung den Aufwand nicht wert ist.

Vielen Dank

Mit freundlichem Gruß

Lost-Ha[n]f-PHP