我正在使用 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 驱动程序为我的数组类型使用自定义鉴别器?我更喜欢不使用包装类,也不使用序列化属性。或者为什么驱动程序忽略了我的配置?