2009-04-14 21 views
3

Ich bin eine Serialisierung einer ArrayList zu einer Binärdatei, um es über TCP/IP zu senden. Die serialisierte Datei wird vom Server erstellt und ich hoffe, dass ich sie mit dem Client deserialisieren kann, den ich gerade schreibe.Konnte Assembly nicht finden

Wenn der Client versucht, es zu deserialisieren, wird jedoch eine SerializationException ausgelöst, da die Assembly (vermutlich) nicht gefunden werden kann, mit der die Datei ursprünglich serialisiert wurde.

Wie kann ich das umgehen?

+0

jede endgültige Lösung mit vollem Quellcode? – Kiquenet

Antwort

5

Enthält Ihre Arraylist benutzerdefinierte Datentypen (d. H. Eigene Klassen)?

Die Arraylist wird nicht deserialisiert, es sei denn, der Code, der das Deserialize ausführt, hat Zugriff auf alle Klassen, die in der Arraylist enthalten sind.

1

Wenn Sie die binäre Serialisierung verwenden, muss der Client Zugriff auf die DLL haben, die den Typ enthält, den Sie in der ArrayList serialisieren. Ich schätze, ich weiß nicht wirklich, wie man das machen soll, aber das ist das Wesentliche.

Wenn Sie etwas wie XML-Serialisierung verwenden (entweder mit XmlSerializaer oder DataContractSerializer), können Sie Xml erzeugen. Sie können den Objektcode auf der Server/Client-Seite duplizieren, wenn Sie die Assembly wirklich nicht freigeben können.

0

Was sind die Daten, die Sie senden möchten? Und wie wird es serialisiert? Wenn Sie BinaryFormatter verwenden, muss sich die Assembly, die benutzerdefinierte Typen deklariert, an beiden Enden befinden.

Beachten Sie, dass BinaryFormatter eine Reihe von Problemen mit der Serialisierung über Systeme (einschließlich zwischen verschiedenen Versionen desselben Systems) aufweist. Möglicherweise möchten Sie sich auch andere Serializer ansehen, z. B. DataContractSerializer oder protobuf-net (für effiziente, plattformübergreifende Binärübertragung).

Verwandte Themen