2014-11-05 95 views
0

我有一个类实现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属性)被忽略。

有谁知道我该如何强制我的类被反序列化为一个普通的类?

回答

0

好的,好像我找到了解决方案。你可以在应用程序启动时做到这一点:

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

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

我希望有人会发现这个答案有帮助!

相关问题