我开始考虑使用 proto-buf .Net 来满足媒体浏览器的序列化需求。
在新系统中,我们有一个可以用插件扩展的实体框架。
所以,比如我们在核心库中定义一个Media类,然后插件就可以定义Song等子类。
似乎 proto-buf .Net 需要了解我们核心定义的基类的所有子类型。
所以我应该用
[ProtoInclude(2, typeof(Song))]
但是……那时我对尚不存在的 Song 类一无所知。
是不是又回到了绘图板上?我是否正在尝试做一些图书馆不适合做的事情?
我开始考虑使用 proto-buf .Net 来满足媒体浏览器的序列化需求。
在新系统中,我们有一个可以用插件扩展的实体框架。
所以,比如我们在核心库中定义一个Media类,然后插件就可以定义Song等子类。
似乎 proto-buf .Net 需要了解我们核心定义的基类的所有子类型。
所以我应该用
[ProtoInclude(2, typeof(Song))]
但是……那时我对尚不存在的 Song 类一无所知。
是不是又回到了绘图板上?我是否正在尝试做一些图书馆不适合做的事情?
(来自作者)
在当前版本中,它被固定为父级已知的类型。然而,这是一个已知的限制,因此有一个计划来抽象元模型,以便它可以在运行时单独提供 - 与您提供此类信息的方式大致相当XmlSerializer(它仍然需要一种提供标签的方法(上面的“2”)每种类型)。
我已经开始了这项工作,但我预计需要几周时间才能使其完全正常工作(重构还将与其他一些更改相关联以帮助紧凑框架)。
所以由你决定......如果你能等几个星期,我希望有一些工作。
请注意,您仍然需要某种方式为所有不同的子类型(配置等)生成(唯一的、可重复的)标签。