我正在与MongoDB进行斗争并让序列化以我想要的方式运行。
我有一个类似于此的解决方案/项目结构:
项目A和B没有相互引用,它们应该忽略了Repository使用MongoDB进行持久化的事实。
在Core中,我已经使用属性Package
定义了一个类型Items
,该属性是Item
的数组。
在项目A中,我通过继承扩展Item
。我可以通过存储库保存Package
的实例,包括扩展Item
的实例。
然而,当项目B尝试检索由项目A创建的Package
时,事情就会崩溃,因为项目B不知道扩展的Item
。反序列化失败。
理想情况下,当项目B加载Package
时,Items
数组只是基数Item
的实例。
想法我认为我正在寻找的解决方案只是强制Repository在持久化Item
时始终使用Core中的基本类型。 我该怎么做?项目A还有其他方法可以在必要时将Item
转换回扩展版本的实例。
我已经尝试过调整序列化,所以_t总是被设置为Core的基类的鉴别器。但这会在反序列化期间导致异常,因为有多种类型映射到该鉴别器。