[英]MongoDriver Deserialization
我对MongoDriver有问题。 我有一个从Class1继承的类,一个Class1的mongo存储库。 例如:
public class Class1: EntityBase
{
[BsonElement("a")]
public A Attr { get; set; }
}
public class Class2: Class1
{
[BsonElement("d")]
public IList<float> D{ get; set; }
[BsonElement("p")]
public int P{ get; set; }
[BsonElement("s")]
public int S{ get; set; }
}
我的解决方案中有几个项目。 我有与类所在的存储库的项目。 当我尝试在第一个项目中插入并加载Class2实例时,一切都很好。 但是当我尝试在另一件事中做同样的事情时:
Element 'd' does not match any field or property of class Class1.
这两个项目都引用存储库项目(dll)。 有什么事吗
我找到了solotuion。 Class1
应该具有mongo属性[BsonKnownTypes]
所以Class1
应该看起来像:
[BsonKnownTypes(typeof(Class2))]
public class Class1: EntityBase
{
[BsonElement("a")]
public A Attr { get; set; }
}
一个项目起作用而另一个项目引发异常的原因很简单。 第一个usel Class2
并将一个实例插入存储库,以便mongoDriver注册继承的类型。 之后,它可以将存储的实例反序列化为Class2
。 第二个对象不了解Class2
因此尝试将对象反序列化为Class1
并引发了有关未知元素'd'的异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.