Frage zur serialisierung/deserialisierung eiens Objekts!!



  • Hallo Freunde,

    ich hab folgende Problematik: Ich habe eine Klasse "foo" welche sich auf Rechner A und B befinden bzw. in zwei verschieden Projekten! die Klasse foo ist im Projket A und B genau identisch, auser das sie sich jeweils in verschieden Namespaces befinden! ( Wieso das so ist, ist mal egal:) )

    Wenn ich nun eine Instanz der Klasse foo aus Projekt A serialiesiee, und diese wieder in B deserialisere, gibts es ne exc exception, was auch logisch ist weil die names spaces verschieden sind wo sich die Klasse befindet! Kann ich das testweise umgehen? So das er mit das das ding deserrialisert ohne auf die Namespace Location der klasse zu schaun???



  • Was heißt bei dir Serialisieren?
    wie wäre es diese Klasse in eine Dll zu packen und in jedem Projekt als Referenz einzubinden dann sind die Namespaces in welcher sich die Klasse befindet doch gleich?



  • Was heißt bei dir Serialisieren?
    wie wäre es diese Klasse in eine Dll zu packen und in jedem Projekt als Referenz einzubinden dann sind die Namespaces in welcher sich die Klasse befindet doch gleich?

    ja ich weis, aber durch diversen umstände ist das grad nich möglich! Die BinaryFormatter will halt nunmal das Object über den Typ namespaceA.Foo von Projekt A deserialiseren aber e gejht nich weil im projekt B der namespaceB.Foo vorliegt... ich weis das ich es später anders machen muss... aber wie könte ich jetzt hier lösesn!



  • ich weiss nicht obs was bringt das ISerializable selber zu implementieren ?



  • Fragen wir mal andersrum, was willst du überhaupt erreichen, eventuell gibt es ja einen anderen Weg.



  • Hmm der einzigste weg ist die anpassung der Namespaces...



  • Das beantwortet nicht meine Frage 😃
    Was hast du denn vor?Oder ist es zu komplex um hier zu erläutern.Meistens gibt es noch eine andere Lösung, doch dazu müssen wir das Hauptproblem wissen.
    Du serialisiert also ein Objekt einer Klasse aus einer Anwendung raus, und willst es in einer anderen Anwendung wieder reinserialisieren?
    Wozu?



  • Du kannst einem Formatter (z.B. dem BinaryFormater) einen Binder mitgeben, der für die Typauflösung benutzt wird. Implementiere einen Binder, der dein Namespace-Mapping macht. Sollte gehen. Hier ist ein Beispiel:

    http://msdn.microsoft.com/de-de/library/system.runtime.serialization.formatters.binary.binaryformatter.binder.aspx


Anmelden zum Antworten