在MongoDB C#驱动程序中将数组序列化为文档

时间:2014-11-05 10:45:43

标签: c# mongodb

我有一个实现ICollection<T>接口的类:

class Test : ICollection<string>
{
    [BsonElement("items")]
    private List<string> _items;

    [BsonElement("someOtherProp")]
    public bool SomeOtherProperty { get; set; }

    // ...ICollection<string> impl
}

默认情况下,它使用ArraySerializer类进行(反)序列化,因此忽略任何其他属性或字段(甚至是公共和BsonElement属性修饰)。

有谁知道如何强制我的课程作为常规课程进行反序列化?

1 个答案:

答案 0 :(得分:0)

好吧,好像我找到了解决方案。您可以在应用程序启动时执行此操作:

BsonSerializer.RegisterSerializer(
    typeof(Test), 
    new BsonClassMapSerializer(BsonClassMap.LookupClassMap(typeof(Test))));

我不确定,但它可能与BsonClassMap.RegisterClassMap(...)方法调用冲突(即方法调用顺序可能很重要) - 我没有检查出来。请注意,此类注册对于整个应用程序域都是全局的。如果它不合适,事情会变得更棘手,因为你不能用BsonClassMapSerializer属性装饰你的类属性。但这是我停止我的小研究的地方,因为我实现了我的目标。

我希望有人会觉得这个答案很有用!