3
,我們有以下情形:ProtoInclude在抽象類 - DLL文件無法知道對方
一個抽象類中DLL1
,從它繼承,在DLL 2類。
dll2引用dll1。 (所以我們不能引用子類 - 循環依賴)
我們怎樣才能ProtoInclude
子類?類型將是未知的。
如果這是唯一的方法,請提供runtimemodel的示例文檔。
,我們有以下情形:ProtoInclude在抽象類 - DLL文件無法知道對方
一個抽象類中DLL1
,從它繼承,在DLL 2類。
dll2引用dll1。 (所以我們不能引用子類 - 循環依賴)
我們怎樣才能ProtoInclude
子類?類型將是未知的。
如果這是唯一的方法,請提供runtimemodel的示例文檔。
兩個選項:
使用串版本的程序集限定名的,而不是typeof()
- 聽起來很脆,但實際上是有多少.NET BCL的掛在一起(見典型BCL的用法:EditorAttribute
,TypeConverterAttribute
等)
[ProtoInclude("Full.Namespace.Type, Assembly, ...")]
(這也應該適用於只是類型+組件,但完全可以版本化也是幫助)
做在您的應用程序代碼運行時(僅在v2中可用)跨兩個組件的結合:
RuntimeTypeModel.Default[typeof(BaseType)].AddSubType(13, typeof(SubType));
爲什麼抽象類需要了解孩子上課嗎? – ChrisBD 2011-12-14 14:54:04
我們已經爲消費者序列化的機制。我們希望它仍然是一個通用的解決方案。意思是,這個行爲不應該發生在子類(只有protobuf定義)。 – kobi7 2011-12-14 14:55:46