我具有以下层次结构-
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>