Бонд: Как изменить имена полей и классов во время генерации кода

У меня есть файл связи с такой структурой:

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 каждой структуры. При использовании двоичных протоколов имена полей не имеют значения: имеют значение только идентификаторы. При использовании текстовых протоколов имена имеют значение.
Другие вопросы по тегам