Как я могу сериализовать в BSON класс, имеющий рекурсивное определение?

1

Я столкнулся с проблемой при попытке сериализовать этот класс С# на документ 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 или ссылки на сборку?)

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

Теги:
visual-studio-2013
bson

1 ответ

1

Класс, определение которого рекурсивно, как ваш класс Node, может быть сериализован без каких-либо проблем, если в данных нет циклических ссылок (бесконечных циклов).

Чтобы использовать метод расширения ToBson, вам нужно добавить следующий оператор using:

using MongoDB.Bson;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню