继承层次结构和泛型

时间:2018-09-29 22:32:38

标签: protobuf-net

我具有以下层次结构-

ProtoBase

 SomeType :ProtoBase

 TypeCacheData<T> : ProtoBase

 ListCacheData<T> : TypedCacheData<List<T>>

并且正在使用

ListCacheData<SomeType> 

在代码中-

我不确定在最新版本中应包含哪些继承属性以实现此目的-

TypeCacheData具有一个名为Value of的属性,其类型为T。

我尝试了一些事情,但是得到了“ ProtoBase”只能参与一个继承层次结构。.

推荐的最新方法是什么?

我看到了- ProtoBuf-Net ProtoInclude Generic Type Subclass

但是它已经很老了...

谢谢!

更新- 我最终提出了以下建议-似乎可行-

它是否遵循推荐的方法,还是我的解决方案过于复杂,甚至是错误的?

谢谢!!

    [ProtoContract]
    [ProtoInclude(2, typeof(LiteAnswer))]
    [ProtoInclude(5, typeof(TypeCacheData<List<int>>))]
    [ProtoInclude(6, typeof(TypeCacheData<List<short>>))]
    [ProtoInclude(7, typeof(TypeCacheData<List<LiteAnswer>>))]
    public class ProtoBase
    {


    }

[ProtoContract]
[ProtoInclude(100, typeof(ListCacheData<LiteAnswer>))]
[ProtoInclude(101, typeof(ListCacheData<int>))]
[ProtoInclude(102, typeof(ListCacheData<short>))]
public class TypeCacheData<T> : ProtoBase { 
   // omitting class implementation to keep example concise

}


   [ProtoContract]
    public class ListCacheData<T> : TypeCacheData<List<T>>

使用上述代码时,我可以反序列化/反序列化以下内容的含义-

ListCacheData<int> 
ListCacheData<short>
ListCacheData<LiteAnswer>

0 个答案:

没有答案