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
, Есть пример, показывающий, как работает импорт, если вам интересно.