3

我正在使用 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[]");
            });

这对数组类型、泛型列表没有影响(但适用于解决方案定义的类型)。

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

4

0 回答 0