假设,我有一个基类
public class Node{
public ObjectId Id;
public String nodeName;
public ObjectId parentNode;
}
和 2 个派生类
public class PlotNode:Node{
public ObjectId Id;
public String plotDetail;
}
public class EndNode:Node{
public ObjectId Id;
public int resultCode;
}
所有 3 个类的几个对象都被序列化在数据库中。
我拥有的唯一数据是 ObjectId 的列表,关于这些 id 的唯一信息是它们肯定是 Node id,但在反序列化时不知道它们是 Node、PlotNode 还是 EndNode。
我正在使用它来反序列化:
var collection = db.GetCollection<Node>("nodes");
var query = Query<Node>.EQ(e => e.Id, id);
Node node = collection.FindOne(query);
最后我得到节点,而不是实际的 PlotNodes 或 EndNodes。
我如何知道它们是否是派生类型之一并取回该类型的对象?