抽象类中的ProtoInclude——dll之间不能相互了解

本文关键字:不能 了解 之间 dll ProtoInclude 抽象类 | 更新日期: 2023-09-27 18:17:45

我们有以下场景:

dll1中的抽象类

在dll2中从它继承的类。

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

我们如何ProtoInclude子类?类型是未知的。

请提供运行时模型的示例文档,如果这是唯一的方法。

抽象类中的ProtoInclude——dll之间不能相互了解

两个选项:

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

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

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

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

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