Десериализация полиморфных типов с помощью драйвера MongoDB C #
Предположим, у меня есть базовый класс
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 классов сериализуются в базе данных.
И только данные, которые у меня есть, это список ObjectIds, и единственное, что известно об этих идентификаторах, это то, что они наверняка будут идентификаторами узлов, но этоне знают, являются ли они Node, PlotNode или EndNode во время десериализации.
Я использую это для десериализации:
var collection = db.GetCollection("nodes");
var query = Query.EQ(e => e.Id, id);
Node node = collection.FindOne(query);
И в конце я получаю Узлы, а не фактические PlotNodes или EndNodes.
Как я могу узнать, являются ли они одним из производных типов, и получить обратно объект этого типа?