我们有以下情况:
dll1中的抽象类
一个继承自它的类,在dll2中。
dll2引用dll1。 (所以我们不能引用子类 - 循环依赖)
我们怎样才能ProtoInclude
孩子班?类型不明。
请提供runtimemodel的示例文档,如果这是唯一的方法。
答案 0 :(得分:2)
两个选项:
使用程序集限定名称的字符串版本,而不是typeof()
- 听起来很脆弱,但实际上有多少.NET BCL挂在一起(参见典型的BCL用法:EditorAttribute
,TypeConverterAttribute
等)
[ProtoInclude("Full.Namespace.Type, Assembly, ...")]
(它也适用于类型+程序集,但完全版本化也可能有帮助)
在跨越两个程序集的应用程序代码中运行时绑定(仅在v2中可用):
RuntimeTypeModel.Default[typeof(BaseType)].AddSubType(13, typeof(SubType));