C#Mongo BsonSerializer.Deserialize忽略不存在的元素

时间:2015-07-02 23:59:38

标签: c# mongodb

是否有一个单位会告诉C#Mongo BsonSerializer忽略poco类中不存在的元素

示例集合

Animal {"Type" : "Cat", "Skill" : "Jump"}
Animal {"Type" : "Dog", "Skill" : "Bark", "Owner" : "Jimmy"}

如果猫C#类只有

public string Type {get;set;}
public string Skill {get;set;}

当我尝试执行以下

 var test = BsonSerializer.Deserialize<Animal>(result);

第一项工作正常,第二项将抛出所有者不存在的例外。

3 个答案:

答案 0 :(得分:7)

在Cat类上使用 [BsonIgnoreExtraElements] 属性。
来自属性摘要:

  

指定在此类时是否应忽略额外元素   反序列化。

答案 1 :(得分:0)

也许您可以反序列化为对象,并使用动态来接收它。

dynamic test = BsonSerializer.Deserialize<object>(result);

答案 2 :(得分:0)

或者您可以使用Conventional一次对所有类型执行

var conventionPack = new ConventionPack { new IgnoreExtraElementsConvention(true) };
ConventionRegistry.Register("IgnoreExtraElements", conventionPack, _ => true);