C# protobuf.net中的子类化

C# protobuf.net中的子类化,c#,.net,serialization,protobuf-net,C#,.net,Serialization,Protobuf Net,我有一个围绕protobuf.net构建的系统,该系统公开了一个我希望最终用户实现的抽象类(foo)。protobuf.net可以序列化抽象类。目前,当我尝试序列化foo的实现时,我得到一个错误: 在过程中发现意外类型 系列化;类型必须包括在内 具有ProtoIncludeAttribute;建立 酒吧以foo的身份通过 这是有道理的,我还没有告诉系统关于酒吧的事,所以当我以foo的身份通过酒吧时,它会感到困惑。有没有一种简洁的方法可以让使用我的库的程序员做事情变得简单(最好只是像正常的prot

我有一个围绕protobuf.net构建的系统,该系统公开了一个我希望最终用户实现的抽象类(foo)。protobuf.net可以序列化抽象类。目前,当我尝试序列化foo的实现时,我得到一个错误:

在过程中发现意外类型 系列化;类型必须包括在内 具有ProtoIncludeAttribute;建立 酒吧以foo的身份通过

这是有道理的,我还没有告诉系统关于酒吧的事,所以当我以foo的身份通过酒吧时,它会感到困惑。有没有一种简洁的方法可以让使用我的库的程序员做事情变得简单(最好只是像正常的protobuf.net用法一样将字段标记为可序列化的)


编辑:显然,我不能使用protoinclude,因为这需要修改基本库的源代码。

在v1中,必须对基本库进行修饰才能了解子库。在v2中,此限制被删除;您可以在运行时创建模型并定义所需的一切。它仍然可以读取属性,这是并排的(如果愿意,可以在不同类型上使用不同的方法)

但是,如果调用方不想知道任何血淋淋的细节,您可以选择将RuntimeTypeModel细节隐藏在自己的API后面


v2可以从主干上构建,而且非常稳定-尽管有一些待办事项-主要是边缘案例,需要完成以实现完全兼容性。大多数人不会看到这些案例。

从v1迁移到v2需要多少工作?我的时间表非常紧:/@Martin,只要你不点击(很少)角落案例,非常少-如果你愿意,请随时给我发电子邮件,说明你想做什么,我会帮你填空……谢谢Marc,我会尝试自己做,如果遇到问题,我会回复你:)啊哈,这看起来很有希望。我想我看到了这将如何工作,它看起来很整洁,谢谢马克