用于Array的MongoDB自定义鉴别器

时间:2015-09-16 11:55:26

标签: .net arrays mongodb serialization discriminator

我正在使用MongoDB(.NET驱动程序1.10)来存储我的C#类,它有一个弱类型的字段:

public class SomeClass : ...
{
    ...

    public object Value { get; set; }
}

默认情况下,如果Value包含一个数组,则该类将使用非常长的鉴别器序列化到文档:

{
    ...

    "Value" : {
        "_t" : "SomeSolution.Domain.SomeSubdomain.SomeFolder.SomeSubfolder.SpecialValueClass[], SomeSolution.Domain",
        "_v" : [ 
            {
                ...
            }, 
            {
                ...
            }, 
            ...
        ]
    }
}

但我想只使用“SpecialValueClass []”鉴别器字符串(或更短)。

我尝试像这样配置映射:

BsonClassMap.RegisterClassMap<SpecialValueClass>();
BsonClassMap.RegisterClassMap<SpecialValueClass[]>(
            cm =>
            {
                cm.AutoMap();
                cm.SetDiscriminator("SpecialValueClass[]");
            });

这对数组类型,通用列表没有影响(但适用于solutuion定义的类型)。

如何告诉mongodb驱动程序为我的数组类型使用自定义鉴别器?我更喜欢不使用包装类,也不使用序列化属性。或者为什么驱动程序会忽略我的配置?

0 个答案:

没有答案