繁体   English   中英

MongoDriver反序列化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM