2009-04-14 10 views
3

Je suis en train de sérialiser une ArrayList dans un fichier binaire afin de l'envoyer via TCP/IP. Le fichier sérialisé est créé par le serveur et j'espère pouvoir le désérialiser avec le client que j'écris en ce moment.Impossible de trouver l'assembly

Cependant, lorsque le client tente de désérialiser, il lève une exception SerializationException car il ne peut pas trouver l'assembly (vraisemblablement) qui a sérialisé le fichier pour commencer.

Comment puis-je contourner ce problème?

+0

une solution finale avec le code source complet? – Kiquenet

Répondre

5

Votre liste contient-elle des types de données personnalisés (c'est-à-dire vos propres classes)?

L'arraylist ne sera désérialisé que si le code exécutant la désérialisation a accès à toutes les classes contenues dans l'arraylist.

1

Si vous utilisez la sérialisation binaire, le client doit avoir accès à la DLL qui contient le type que vous sérialiser dans ArrayList. Je suppose que je ne connais pas vraiment votre configuration pour décrire comment cela devrait être fait, mais c'est l'essentiel.

Si vous utilisez quelque chose comme la sérialisation xml (soit en utilisant XmlSerializaer ou DataContractSerializer), vous serez en mesure de produire Xml. Vous pouvez dupliquer le code d'objet côté serveur/client si vous ne pouvez vraiment pas partager l'assembly.

0

Quelles sont les données que vous essayez d'envoyer? Et comment le sérialisez-vous? Si vous utilisez BinaryFormatter, l'assembly déclarant tous les types personnalisés doit se trouver aux deux extrémités.

Notez que BinaryFormatter présente une série de problèmes liés à la sérialisation entre systèmes (y compris entre différentes versions du même système). Vous pouvez vouloir regarder d'autres sérialiseurs, tels que DataContractSerializer, ou protobuf-net (pour le transfert binaire multiplate-forme efficace).

Questions connexes