如何在没有程序集完全限定名的情况下在MongoDb中存储对象

如何在没有程序集完全限定名的情况下在MongoDb中存储对象,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我存储包含字典等字段的项 在mongo中,此字段具有_t=System.Collections.Generic.Dictionary`2[System.String,[Namespace.MyType,Namespace,Version=1.0.0.0,Culture=neutral,PublicKeyToken=89b48272fdae8cae]] 我不需要版本和PublicKeyToken,而且这对于下一个版本的汇编来说可能是个麻烦 如何使用System.Collections.Generi

我存储包含字典等字段的项 在mongo中,此字段具有_t=System.Collections.Generic.Dictionary`2[System.String,[Namespace.MyType,Namespace,Version=1.0.0.0,Culture=neutral,PublicKeyToken=89b48272fdae8cae]]

我不需要版本和PublicKeyToken,而且这对于下一个版本的汇编来说可能是个麻烦
如何使用System.Collections.Generic.Dictionary`2[System.String,[Namespace.MyType]]等属性存储数据?

类型鉴别器用于继承和将声明的类型解析为存储的类型。 如果您有一个具有具体属性的具体类,则不需要鉴别器

假设您在类上有一个属性:

public class Foo : MyBase{
   ...
   public string Title {get;set;}
}

public class Bar: MyBase{
   ...
   public string Title {get;set;}
}
驱动程序可能能够将其映射到字符串数组并存储在mongodb中 {{u id:…,标题:“你好”}

然而,在退出的过程中,驱动程序必须决定BSON阵列将变成什么。如果没有类型鉴别器,它是否应该生成:Foo的实例?酒吧?我的基地


如果你有一个类,它有一个具体的字典而不是一个字典,你可以避免很多这种情况。

你需要进行自定义序列化。如果存储.NET类型(如Dictionary),则数据非常不可移植。可以吗?