强制序列化为基本类型

时间:2015-07-15 14:01:41

标签: c# mongodb bson

我正在与MongoDB进行斗争并让序列化以我想要的方式运行。

我有一个类似于此的解决方案/项目结构:

  • Core,包含众所周知的实体,但没有业务逻辑,并且被所有其他项目引用。
  • 存储库,用于处理实体的持久性(在Core中定义)。包含各种持久性方法,包括使用MongoDB的方法。
  • 项目A,引用了Core和Repository。
  • Poject B,也引用了Core和Repository。

项目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的基类的鉴别器。但这会在反序列化期间导致异常,因为有多种类型映射到该鉴别器。

0 个答案:

没有答案