ProtoInclude在抽象类中 - dll无法相互了解

时间:2011-12-14 14:51:47

标签: c# interface include protobuf-net

我们有以下情况:

dll1中的抽象类

一个继承自它的类,在dll2中。

dll2引用dll1。 (所以我们不能引用子类 - 循环依赖)

我们怎样才能ProtoInclude孩子班?类型不明。

请提供runtimemodel的示例文档,如果这是唯一的方法。

1 个答案:

答案 0 :(得分:2)

两个选项:

  1. 使用程序集限定名称的字符串版本,而不是typeof() - 听起来很脆弱,但实际上有多少.NET BCL挂在一起(参见典型的BCL用法:EditorAttributeTypeConverterAttribute等)

    [ProtoInclude("Full.Namespace.Type, Assembly, ...")]
    

    (它也适用于类型+程序集,但完全版本化也可能有帮助)

  2. 在跨越两个程序集的应用程序代码中运行时绑定(仅在v2中可用):

    RuntimeTypeModel.Default[typeof(BaseType)].AddSubType(13, typeof(SubType));