序列化和反序列化未知的继承类型

时间:2009-03-26 05:26:35

标签: c# protocol-buffers protobuf-net

我开始考虑使用proto-buf .Net来满足媒体浏览器的序列化需求。

在新系统中,我们有一个可以使用插件扩展的实体框架。

因此,例如,我们在核心库中定义一个Media类,然后插件可以定义诸如Song之类的子类。

似乎proto-buf .Net需要知道我们的核心定义基类的所有子类型。

所以我希望用

来装饰我的基类
[ProtoInclude(2, typeof(Song))]

但是......在那个时候,我对尚不存在的宋课一无所知。

回到绘图板吗?我试图做一些不是为图书馆设计的东西吗?

1 个答案:

答案 0 :(得分:1)

(来自作者)

在当前版本中,它固定为父级已知的类型。但是,这是一个已知的限制,因此有一个计划来抽象元模型,以便它可以在运行时单独提供 - 大致与您向XmlSerializer提供此类信息的方式相当(它仍然需要一种方式提供每种类型的标签(上面的“2”)。

我已经开始了这项工作,但我希望它需要几周的时间才能完全发挥作用(重构也将与其他一些变化相关to help compact framework)。

由你决定...如果你能等几周,我希望能有所作为。

请注意,您仍然需要某种方法为所有不同的子类型(配置等)生成(唯一的,可重复的)标签。