J'essaie de sérialiser et de désérialiser un ReadOnlyCollection
en utilisant protobuf-net. Cependant, une exception est lancée lors de la désérialisation lorsque protobuf-net tente de convertir une liste en une ReadOnlyCollection.protobuf-net: échec de désérialisation ReadOnlyCollection
var roc = new ReadOnlyCollection<byte>(new byte[] {1, 2, 3});
var ms = new MemoryStream();
Serializer.Serialize(ms, roc);
ms.Position = 0;
var roc2 = Serializer.Deserialize<ReadOnlyCollection<byte>>(ms);
Console.WriteLine(BitConverter.ToString(roc2.ToArray()));
Est-il possible de garder cela comme un ReadOnlyCollection
plutôt que sérialisation/désérialisation comme List
? Dans l'application réelle, le ReadOnlyCollection
fait partie d'un objet immuable que je veux sérialiser, et je préférerais le garder comme ReadOnlyCollection
.
Ooh, c'est intrigant. * maintenant * Je devrais dire simplement "non ça ne marchera pas", mais je peux penser à quelques façons de le modifier pour le * faire * fonctionner. Ce serait toutefois des changements au cœur de la désérialisation. Vous pourriez vouloir enregistrer ceci comme demande de fonctionnalité sur protobuf-net. –
J'ai ajouté un [problème] (http://code.google.com/p/protobuf-net/issues/detail?id=254) pour ce problème et une correction possible, mais j'ai oublié de changer le type de problème. répertorié comme un défaut. Doh! – Mark
J'ai vu. Merci. J'y viendrai, mais gardez à l'esprit que protobuf-net n'est pas mon travail de jour - il faudra peut-être quelques jours pour l'examiner de près. –