C# Bond: Могу ли я иметь список пользовательских классов в моей структуре облигаций?

Я знаю, что списки поддерживаются в Bond, мне просто интересно, сможем ли мы создать класс как

class Car
{
    string Model;
    string PlateNumber;

    // ...
}

Могу ли я иметь что-то подобное в файле облигаций?

namespace MyNameSpace
{
    struct Gallery
    {
        0: required List<Cars> AllCars;
    }
}

Если это возможно, может кто-нибудь написать пример того, каким должен быть полный файл облигаций?

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

Редактировать: Мне нужно, чтобы Автомобиль был структурой связи, которая должна быть сериализована как часть Галереи, поэтому всякий раз, когда я получаю объект Галереи, я должен иметь возможность получить доступ и изменить список принадлежащих ему автомобилей.

1 ответ

Поскольку вы хотите, чтобы Car была структурой Bond, вы можете определить ее в том же файле.bond, что и Gallery, и затем использовать ее при определении AllCars поле. Вот пример gallery.bond:

namespace MyNameSpace;

struct Car
{
    0: string Model;
    1: string PlateNumber;
}

struct Gallery
{
    // Car needs to be defined/imported before Gallery so it's visible here
    0: required vector<Car> AllCars;
}

Обратите внимание, что Бонда vector тип поля отображается в C# List, (Бонд list карты для LinkedList.)

Документация для gbc Инструмент генерации кода, хотя и кратко, рассказывает о типах, которые может иметь определение поля. Если вам в конечном итоге понадобятся рекурсивные структуры, вам нужно будет использовать предварительные объявления и пустые поля.

Если бы вы хотели, вы могли бы поставить Car его собственный файл.bond, а затем импортировать этот файл.bond в тот, Gallery, Есть пример, показывающий, как работает импорт, если вам интересно.

Другие вопросы по тегам