我正在尝试序列化一个ItemTransaction
并且 protobuf-net (r282) 有问题。
ItemTransaction : IEnumerable<KeyValuePair<Type, IItemCollection>></code>
和 ItemCollection 是这样的:
FooCollection : ItemCollection<Foo>
ItemCollection<T> : BindingList<T>, IItemCollection
IItemCollection : IList<Item>
其中 T 是 Item 的派生类型。ItemCollection 还具有 IItemCollection 类型的属性。
我是这样序列化的:
IItemCollection itemCol = someService.Blah(...);
...
SerializeWithLengthPrefix<IItemCollection>(stream, itemCol, PrefixStyle.Base128);
我的最终目标是序列化 ItemTransaction,但被 IItemCollection 困住了。
项目及其派生类型可以毫无问题地 [反] 序列化,请参阅 [1],但反序列化 IItemCollection 失败(序列化工作)。ItemCollection 具有 ItemExpression 属性,并且在反序列化 protobuf 时无法创建抽象类。这对我来说很有意义,但我不知道如何通过它。
ItemExpression<T> : ItemExpression, IItemExpression
ItemExpression : Expression
ItemExpression 和 Expression 一样是抽象的
我怎样才能让它正常工作?
此外,我担心 ItemTransaction 会失败,因为 IItemCollections 在编译时会有所不同且未知(ItemTransaction 将具有 FooCollection、BarCollection、FlimCollection、FlamCollection 等)。
我错过了什么(马克)?