繁体   English   中英

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

[英]Serializing arrays as documents in MongoDB C# driver

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

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

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

    // ...ICollection<string> impl
}

默认情况下,使用ArraySerializer类对其进行(反)序列化,因此将忽略任何其他属性或字段(即使是public或由BsonElement属性修饰)。

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

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

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

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

我希望有人会对此答案有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM