代码之家  ›  专栏  ›  技术社区  ›  Sam Saffron James Allen

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

  •  1
  • Sam Saffron James Allen  · 技术社区  · 15 年前

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

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

    例如,我们在核心库中定义了一个媒体类,然后插件可以定义子类,如song。

    看来proto buf.net需要了解核心定义的基类的所有子类型。

    所以我要用

    [ProtoInclude(2, typeof(Song))]
    

    但是…当时我对尚不存在的歌曲课一无所知。

    是不是又回到了画板上?我是不是想做一些图书馆不适合做的事情?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Marc Gravell    15 年前

    (来自作者)

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

    我已经开始了这项工作,但我希望需要几个星期才能使它完全工作(重构也将与其他一些更改联系在一起 to help compact framework )

    所以由你决定…如果你能等几个星期,我希望能有点效果。

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