具有嵌套字典和多态性的MessagePack

时间:2017-06-14 19:52:07

标签: c# nested polymorphism abstract msgpack

我一直在使用MessagePackKnownCollectionItemTypeAttribute,例如。

[MessagePackKnownCollectionItemTypeAttribute( "MyAbstractBase", typeof( MyImpl ) )] Dictionary<int, MyAbstractBase> class_member;

这很有效,但如果我有:

[MessagePackKnownCollectionItemTypeAttribute( "MyAbstractBase", typeof( MyImpl ) )] Dictionary<int, Dictionary<int, MyAbstractBase>> class_member;

以上不会工作,我得到&#34;不支持此操作,因为&#39; MyAbstractBase&#39;无法实现。&#34; (在运行时,我实例化一个序列化程序)。 我也试过了 [MessagePackKnownCollectionItemTypeAttribute( "MyAbstractBase", typeof( Dictionary<int, MyImpl> ) )] Dictionary<int, Dictionary<int, MyAbstractBase>> class_member;

这也给出了同样的错误。

有没有办法像这样处理嵌套字典中的抽象类? 谢谢!

1 个答案:

答案 0 :(得分:0)

为了它的价值,我最终使用了一个中间类:

public class MyIntermediaryDict
{
    [MessagePackKnownCollectionItemTypeAttribute( "MyAbstractBase", typeof( MyImpl ) )]
    public Dictionary<int, MyAbstractBase> intermediary_dict;

};

class MySerializableClass
{
    public Dictionary<int, MyIntermediaryDict> myDict;
}