我想序列化一個ItemTransaction
和protobuf網(r282)有問題。protobuf-net可以序列化這個接口和泛型集合的組合嗎?
ItemTransaction : IEnumerable<KeyValuePair<Type, IItemCollection>></code>
和ItemCollection是這樣的:
FooCollection : ItemCollection<Foo>
ItemCollection<T> : BindingList<T>, IItemCollection
IItemCollection : IList<Item>
其中T是項目的派生類型。 ItemCollection也有一個類型爲IItemCollection的屬性。
我序列化是這樣的:
IItemCollection itemCol = someService.Blah(...);
...
SerializeWithLengthPrefix<IItemCollection>(stream, itemCol, PrefixStyle.Base128);
我的最終目標是序列化ItemTransaction,但我有IItemCollection陷入僵局。
Item和它的派生類型可以被[de]序列化,沒有問題,參見[1],但反序列化一個IItemCollection失敗(序列化作品)。 ItemCollection具有ItemExpression屬性,並且在反序列化protobuf時無法創建抽象類。這對我有意義,但我不知道如何通過它。
ItemExpression<T> : ItemExpression, IItemExpression
ItemExpression : Expression
ItemExpression是抽象的表達是
我如何得到這個正常工作?
此外,我擔心ItemTransaction會失敗,因爲IItemCollections在編譯時將會不同且未知(ItemTransaction將具有FooCollection,BarCollection,FlimCollection,FlamCollection等)。
我錯過了什麼(馬克)?
[1] protobuf-net [de]serializing across assembly boundaries
有關信息,爲「v2」添加並傳遞的特定測試;我沒有碰過(缺少)帶有長度前綴的代碼,但是到了那裏:http://code.google.com/p/protobuf-net/source/browse/trunk/protobuf-net.unittest/Meta/ AbstractListsWithInheritance.cs – 2010-04-23 07:06:43