Бонд: Как изменить имена полей и классов во время генерации кода
У меня есть файл связи с такой структурой:
struct Foo
{
0: float myField1;
1: float myField2;
}
Я использую этот файл для генерации кода для C++, а также для C#. Но в коде C# я хочу, чтобы имена полей были написаны заглавными буквами: MyField1, MyField2.
Есть какой-либо способ сделать это?
Точно так же я мог бы хотеть, чтобы Foo был назван Bar в моем коде C# (чтобы быть обратно совместимым с моими клиентами перед связыванием). Но я не вижу документации о том, как это можно сделать.
1 ответ
При использовании генератора кода Бонда gbc невозможно переименовать типы / поля. Функции просто не существуют.
Если вы хотите, вы можете написать класс C# вручную и аннотировать его атрибутами Bond. Это даст вам очень совместимую структуру. При таком подходе вы теряете большую часть преимуществ, связанных с одним центральным местоположением для описания структур в файле.bond. Это может быть правильным компромиссом для взаимодействия с вашими клиентами до Бонда, аннотируя существующие классы.
Пример того, как вы могли бы сделать это на основе структур в вопросе:
[Bond.Schema]
class Bar
{
[Bond.Id(0)]
public float MyField1;
[Bond.Id(1)]
public float MyField2;
}
Это имеет некоторые оговорки:
- При внесении изменений вам придется вручную синхронизировать его с файлом.bond.
- Полные схемы этих структур Foo и Bar немного отличаются. Поля имеют разные имена ("myField1" и "MyField2"), которые вы сможете обнаружить, если посмотрите на SchemaDef каждой структуры. При использовании двоичных протоколов имена полей не имеют значения: имеют значение только идентификаторы. При использовании текстовых протоколов имена имеют значение.