public static bool AddMsgIdEntity(string nameSpace, MsgIDEntity idEntity) { if (string.IsNullOrEmpty(nameSpace)) { nameSpace = "0"; } if (!ProtoPackage.MsgIDs.ContainsKey(nameSpace)) { ProtoPackage.MsgIDs.Add(nameSpace, new List <MsgIDEntity>()); } foreach (var id in ProtoPackage.MsgIDs[nameSpace]) { if (id.FieldToken.Value == idEntity.FieldToken.Value) { Console.WriteLine(string.Format("{0} ID name repeated in same namespace {1}", idEntity.FieldToken, id.FieldToken)); return(false); } if (id.ValueToken.IntValue == idEntity.ValueToken.IntValue) { Console.WriteLine(string.Format("{0} ID value repeated in same namespace {1}", idEntity.FieldToken, id.FieldToken)); return(false); } } ProtoPackage.MsgIDs[nameSpace].Add(idEntity); return(true); }
public static bool Check(this EnumEntity entity, string nameSpace) { if (entity.Name == null) { return(false); } for (int i = 0; i < entity.Fields.Count; ++i) { var field = entity.Fields[i]; if (field.Name.Value.IndexOf("MSG_ID_") == 0 || field.Name.Value.IndexOf("RPC_") == 0) { if (field.Value == null) { Console.WriteLine(string.Format("{0} => Msg or RPC ID must have value, like: MSG_ID_XXX = 12345, or RPC_service_func=123", field.Name)); return(false); } MsgIDEntity idEntity = new MsgIDEntity() { FieldToken = field.Name, ValueToken = field.Value, EnumToken = entity.Name, }; if (!AddMsgIdEntity(nameSpace, idEntity)) { return(false); } } for (int j = i + 1; j < entity.Fields.Count; ++j) { if (field.Name.Value == entity.Fields[j].Name.Value) { Console.WriteLine(string.Format("{0} => Enum field name repeated", field.Name)); return(false); } } } var token = FindName(nameSpace, entity.Name); if (token != null) { Console.WriteLine(string.Format("{0} => Enum name has exist in {1}", entity.Name, token)); return(false); } return(true); }