Я столкнулся с проблемой при попытке сериализовать этот класс С# на документ BSON, используя последний драйвер Csharp 1.9.1 для MongoDB: -
public class Node
{
public string name
{
get;
set;
}
public List<Node> children
{
get;
set;
}
public int size
{
get;
set;
}
public Node()
{
children = new List<Node>();
}
}
Я хотел бы знать, можем ли мы сериализовать это определение рекурсивного класса (я пытаюсь создать древовидную структуру) с помощью средства AutoMap() или нет. Если нет, что мне делать, чтобы сериализовать это? Нужно ли мне вручную писать код для сериализации дерева снизу вверх?
У меня это в моем коде инициализации (для регистрации класса):
BsonClassMap.RegisterClassMap<Node>();
Кроме того, как мне преобразовать экземпляр узла в документ BSON, как при попытке использовать:
var bsonDoc = node1.ToBson();
Это приводит к ошибке:
Ошибка 1 "Узел" не содержит определения для "ToBson", и не может быть найден метод расширения "ToBson", принимающий первый аргумент типа "Node" (вам не хватает директивы using или ссылки на сборку?)
Кроме того, как я могу десериализовать, чтобы вернуть объекты?
Класс, определение которого рекурсивно, как ваш класс Node, может быть сериализован без каких-либо проблем, если в данных нет циклических ссылок (бесконечных циклов).
Чтобы использовать метод расширения ToBson, вам нужно добавить следующий оператор using:
using MongoDB.Bson;