Guybrush Threepwood Geschrieben 22. Juli 2009 Geschrieben 22. Juli 2009 Ich habe eine Klasse die ich gerne serialisieren würde, diese Klasse enthält eine weitere Klasse mit Daten und einen string mit der Signatur dieser Daten. Also so in der Art: [Serializable()] public class MyFile { [Serializable()] public class MyInformation { public string LastName; public string FirstName; } public MyInformation MyInfo; public string MyKey; } [/PHP] Ich erstelle mir die Signatur der Daten mit der RSACryptoServiceProvider und schreib die dann in das MyKey Feld, danach will ich die gesamte Klasse in eine Datei serialisieren. Das klappt soweit auch mit dem XMLSerializer, allerdings bekomme ich dann beim deserialisieren immer die Meldung das da ungültige Zeichen drin enthalten wären (sind in der Signatur). Wie bekomme ich die vernünftig serialisiert und wieder deserialisiert? Habs noch mit dem BinaryFormatter versucht allerdings schreibt der immer einen Header mit dem Namen der Assembly die das serialisiert hat und verlangt diese dann beim deserialisieren...
Jasper_19 Geschrieben 22. Juli 2009 Geschrieben 22. Juli 2009 kurze frage meinerseits warum schreibst du eine klasse in einer klasse?
Jasper_19 Geschrieben 22. Juli 2009 Geschrieben 22. Juli 2009 also ich kenn das eigentlich nur dass man von Klassen erbt oder ableitet. Klassen zu verschachteln macht aus meiner Sicht nich soviel Sinn. Frage ja auch nur interessehalber :-)
Guybrush Threepwood Geschrieben 22. Juli 2009 Autor Geschrieben 22. Juli 2009 (bearbeitet) Klassen zu verschachteln macht aus meiner Sicht nich soviel Sinn. Das macht sogar jede Menge Sinn In dem Fall zum Beispiel das MyInformation nur innerhalb von MyFile benötigt wird. Zwar kann man trotzdem auch einfach so eine Instanz von MyInformation erstellen, aber es ist gekapselter und es könnte zum Beispiel auch im selben Namensraum eine andere Klasse mit selbem Namen existieren. Aber um mal auf mein Problem zurück zu kommen, ich hab mal versucht die Signatur noch mit Convert.ToBase64String umzuwandeln und auf der anderen Seite entsprechend zurück. Jetzt lässt sich alles wieder deserialisieren und ich sehe auh keinen Unterschied in den Inhalten, aber VerifyData schlägt trotzdem fehl... Bearbeitet 22. Juli 2009 von Guybrush Threepwood
Klotzkopp Geschrieben 22. Juli 2009 Geschrieben 22. Juli 2009 Jetzt lässt sich alles wieder deserialisieren und ich sehe auh keinen Unterschied in den Inhalten, aber VerifyData schlägt trotzdem fehl...Deserialisiert du denn wieder in einen String? Ich glaube nicht, dass das für binäre Daten der richtige Typ ist.
Guybrush Threepwood Geschrieben 22. Juli 2009 Autor Geschrieben 22. Juli 2009 Das wird zurück in die selbe Klasse deserialisiert. Ich hab durch etwas rumprobieren eine Vermutung wo das Problem liegt. Denn es funktioniert alles wenn es im selben Programm stattfindet. Nur wenn das deserialisierende Programm ein anderes ist klappt das nicht und ich vermute das liegt daran das im Datentyp die Assemblyinformationen drin stecken und diese mit signiert werden. Weil im Moment ist es noch so das ich in beiden Programmen zweimal die selbe Klasse angelegt habe, wenn ich die Klasse in einer Assembly anlege und diese dann in beiden Programmen referenziere wird es vermutlich funktionieren. Konnte ich aber eben nicht mehr testen
Guybrush Threepwood Geschrieben 23. Juli 2009 Autor Geschrieben 23. Juli 2009 Ja das war das Problem mit einer gemeinsam referenzierten Assembly welche den serialisierten Datentyp enthält funktioniert es.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden