序列化数组作为MongoDB中C#驱动程序文件
问题描述:
我有一个类实现ICollection<T>
接口:序列化数组作为MongoDB中C#驱动程序文件
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
属性来修饰您的类属性。但这是我停止我的小研究,因为我实现了我的目标。
我希望有人会发现这个答案有帮助!