我一直在使用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;
这也给出了同样的错误。
有没有办法像这样处理嵌套字典中的抽象类? 谢谢!
答案 0 :(得分:0)
为了它的价值,我最终使用了一个中间类:
public class MyIntermediaryDict
{
[MessagePackKnownCollectionItemTypeAttribute( "MyAbstractBase", typeof( MyImpl ) )]
public Dictionary<int, MyAbstractBase> intermediary_dict;
};
class MySerializableClass
{
public Dictionary<int, MyIntermediaryDict> myDict;
}