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... Zitieren
Jasper_19 Geschrieben 22. Juli 2009 Geschrieben 22. Juli 2009 kurze frage meinerseits warum schreibst du eine klasse in einer klasse? Zitieren
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 :-) Zitieren
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 Zitieren
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. Zitieren
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 Zitieren
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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.