在MongoDB C#驱动程序中将数组序列化为文档
本文关键字:数组 序列化 文档 MongoDB 驱动程序 | 更新日期: 2023-09-27 18:29:16
我有一个实现ICollection<T>
接口的类:
class Test : ICollection<string>
{
[BsonElement("items")]
private List<string> _items;
[BsonElement("someOtherProp")]
public bool SomeOtherProperty { get; set; }
// ...ICollection<string> impl
}
默认情况下,它是使用ArraySerializer
类进行(反)序列化的,因此任何其他属性或字段(甚至是用BsonElement
属性修饰的公共和字段)都将被忽略。
有人知道我如何强制将我的类反序列化为常规类吗?
好吧,我似乎找到了一个解决方案。您可以在应用程序启动时执行此操作:
BsonSerializer.RegisterSerializer(
typeof(Test),
new BsonClassMapSerializer(BsonClassMap.LookupClassMap(typeof(Test))));
我不确定,但它可能与BsonClassMap.RegisterClassMap(...)
方法调用冲突(即方法调用顺序可能很重要)——我没有检查过。请注意,此类注册对于整个应用程序域是全局的。如果不合适,事情会变得更加棘手,因为您不能仅仅用BsonClassMapSerializer
属性来装饰类属性。但这就是我停止小研究的地方,因为我实现了我的目标。
我希望有人会发现这个答案有帮助!