Десериализация полиморфных типов с помощью драйвера 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.

Как я могу узнать, являются ли они одним из производных типов, и получить обратно объект этого типа?

Ответы на вопрос(1)

Ваш ответ на вопрос