美文网首页
Protobuf的Enum枚举类型不能同名?

Protobuf的Enum枚举类型不能同名?

作者: zeaven | 来源:发表于2021-01-07 09:43 被阅读0次

Protobuf的Enum枚举类型不能同名?

报错

enum CHARACTER_STATE
{
    IDLE = 0;
    MOVE = 1;
}

enum ENTITY_EVENT
{
    NONE = 0;
    IDLE = 1;
    MOVE_FWD = 2;
    MOVE_BACK = 3;
    JUMP = 4;
}


"message": "\"IDLE\" is already defined in \"SkillBridge.Message\".


"message": "Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, \"NONE\" must be unique within \"SkillBridge.Message\", not just within \"ENTITY_EVENT\".",

原因

protobuf使用类似c的枚举规则,不允许枚举中出现同名。

解决办法

给枚举项加入前缀

enum CHARACTER_STATE
{
    IDLE = 0;
    MOVE = 1;
}


enum ENTITYEVENT
{
    ENTITYEVENT_NONE =0;
    ENTITY_EVENT_IDLE = 1;
    ENT_ITY_EVENT_MOVE_FWD = 2;
    ENT_IT_Y_EVENT_MOVE_BACK = 3;
    ENT_IT_Y_EVENT_JUM_P = 4;
}

在生成C#代码时,会忽略掉等同于ENTITYEVENT的前缀:

  public enum CHARACTER_STATE {
    [pbr::OriginalName("IDLE")] Idle = 0,
    [pbr::OriginalName("MOVE")] Move = 1,
  }

  public enum ENTITYEVENT {
    [pbr::OriginalName("ENTITYEVENT_NONE")] None = 0,
    [pbr::OriginalName("ENTITY_EVENT_IDLE")] Idle = 1,
    [pbr::OriginalName("ENT_ITY_EVENT_MOVE_FWD")] MoveFwd = 2,
    [pbr::OriginalName("ENT_IT_Y_EVENT_MOVE_BACK")] MoveBack = 3,
    [pbr::OriginalName("ENT_IT_Y_EVENT_JUM_P")] JumP = 4,
  }

相关文章

  • Protobuf的Enum枚举类型不能同名?

    Protobuf的Enum枚举类型不能同名? 报错 原因 protobuf使用类似c的枚举规则,不允许枚举中出现同...

  • 枚举资料笔记

    概念:被enum关键字修饰的类型就是枚举类型,枚举类型都隐式继承Enum,根据java不可以多继承的原理,不能再继...

  • 枚举

    枚举 wiki Java的枚举类型用法介绍 深入理解Java枚举类型(enum) 为什么要用enum? 学习计划 ...

  • Rust 编程语言-6-枚举和模式匹配

    6. Enum和Pattern matching 6.1 Enum枚举 IP地址枚举 消息类型枚举:可以看到枚举中...

  • 037_枚举类型。

    namespace _037_枚举类型 { //枚举类型的定义 enum GameState:byte//...

  • 菜鸡学Swift3.0 12.枚举

    1. 枚举定义 enum 定义枚举类型 { case 枚举项 ... } 2.原始值 rawValue enum...

  • C语言基础 之 枚举类型

    枚举类型 枚举类型: 列出所有可能的值 枚举类型的定义 枚举类型定义的一般格式:enum 枚举类型名 {枚举值表}...

  • Python_枚举

    一、枚举 Enum类 Python中所有枚举类型都是enum模块下的Enum类的子类。 枚举中的标识最好全部使用大...

  • 在学习swift的一些笔记(七)

    OC与Swift中的枚举 OC的枚举NS_ENUM NS_ENUM : 递增枚举, 每个枚举类型即便不是每个都赋值...

  • C#魔将-lesson_07-枚举

    枚举(Enum) 枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C# 枚举是值类型。换句话说,枚...

网友评论

      本文标题:Protobuf的Enum枚举类型不能同名?

      本文链接:https://www.haomeiwen.com/subject/wtnaoktx.html