1

我有一个结构如下的债券文件:

struct Foo
{
    0: float myField1;
    1: float myField2;
}

我正在使用此文件为 C++ 和 C# 生成代码。但在 C# 代码中,我希望字段名称大写:MyField1、MyField2。

有没有办法做到这一点?

同样,我可能希望在我的 C# 代码中将 Foo 命名为 Bar(以便与我的预绑定客户端向后兼容)。但我没有看到任何关于如何做到这一点的文档。

4

1 回答 1

0

使用 Bond 代码生成器 gbc 时,无法重命名类型/字段。这些功能根本不存在。

如果需要,您可以手动编写一个 C# 类并使用 Bond 的attributes对其进行注释。这将为您提供高度兼容的结构。您确实失去了使用这种方法在 .bond 文件中描述结构的一个中心位置的大部分好处。通过注释现有类,这可能是与您的 pre-Bond 客户交互的正确权衡。

您将如何根据问题中的结构执行此操作的示例:

[Bond.Schema]
class Bar
{
    [Bond.Id(0)]
    public float MyField1;

    [Bond.Id(1)]
    public float MyField2;
}

这有一些警告:

  • 进行更改时,您必须手动使其与 .bond 文件保持同步。
  • 这些 Foo 和 Bar 结构的完整模式略有不同。这些字段具有不同的名称(“myField1”与“MyField2”),如果您查看每个结构的 SchemaDef,您将能够检测到这些名称。使用二进制协议时,字段名称无关紧要:只有 ID 才重要。使用基于文本的协议时,名称很重要
于 2017-01-31T05:51:33.783 回答