Can protobuf-net serialize this combination of interface and generic collection?
Posted
by tsupe
on Stack Overflow
See other posts from Stack Overflow
or by tsupe
Published on 2010-04-19T20:47:06Z
Indexed on
2010/04/22
21:33 UTC
Read the original article
Hit count: 380
I am trying to serialize a ItemTransaction
and protobuf-net (r282) is having a problem.
ItemTransaction : IEnumerable<KeyValuePair<Type, IItemCollection>></code>
and ItemCollection is like this:
FooCollection : ItemCollection<Foo>
ItemCollection<T> : BindingList<T>, IItemCollection
IItemCollection : IList<Item>
where T is a derived type of Item. ItemCollection also has a property of type IItemCollection.
I am serializing like this:
IItemCollection itemCol = someService.Blah(...);
...
SerializeWithLengthPrefix<IItemCollection>(stream, itemCol, PrefixStyle.Base128);
My eventual goal is to serialize ItemTransaction, but am snagged with IItemCollection.
Item and it's derived types can be [de]serialized with no issues, see [1], but deserializing an IItemCollection fails (serializing works). ItemCollection has a ItemExpression property and when deserializing protobuf can't create an abstract class. This makes sense to me, but I'm not sure how to get through it.
ItemExpression<T> : ItemExpression, IItemExpression
ItemExpression : Expression
ItemExpression is abstract as is Expression
How do I get this to work properly?
Also, I am concerned that ItemTransaction will fail since the IItemCollections are going to be differing and unknown at compile time (an ItemTransaction will have FooCollection, BarCollection, FlimCollection, FlamCollection, etc).
What am I missing (Marc) ?
[1] http://stackoverflow.com/questions/2276104/protobuf-net-deserializing-across-assembly-boundaries
© Stack Overflow or respective owner