public void VerifyDefine() { if (!Util.MatchIdentifier(Name)) { Error("命名不合法:" + Name); } if (!IsConst(_fullName)) { Error("常量仅支持基础类型(bool,int,long,float,string,enum):" + Name); } switch (FullName) { case Setting.BOOL: if (!bool.TryParse(_value, out bool b)) { Error("值与类型不匹配:" + Name); } break; case Setting.INT: if (!int.TryParse(_value, out int i)) { Error("值与类型不匹配:" + Name); } break; case Setting.LONG: if (!long.TryParse(_value, out long l)) { Error("值与类型不匹配:" + Name); } break; case Setting.FLOAT: if (!float.TryParse(_value, out float f)) { Error("值与类型不匹配:" + Name); } break; default: if (EnumWrap.IsEnum(_fullName) && !EnumWrap.Enums[_fullName].ContainItem(Value)) { Error("值与类型不匹配:" + Name); } break; } var git = _groups.GetEnumerator(); while (git.MoveNext()) { if (!GroupWrap.IsGroup(git.Current)) { Error("未知 Group:" + git.Current); } } }
static void Add(EnumWrap info) { if (_enums.ContainsKey(info._fullName)) { Util.LogWarningFormat("{0} 重复定义!", info._fullName); } else { _enums.Add(info._fullName, info); } }
public static bool IsRawOrEnumOrClass(string type) { return(Setting.RawTypes.Contains(type) || EnumWrap.IsEnum(type) || ClassWrap.IsClass(type)); }
public static bool IsConst(string type) { return(Setting.ConstTypes.Contains(type) || EnumWrap.IsEnum(type)); }
public void VerifyDefine() { CheckType(1); if (!Util.MatchIdentifier(Name)) { Error("命名不合法:" + Name); } string type = OriginalType; if (!IsRaw && !IsClass && !IsEnum) { if (IsContainer) { if (type == "list") { CheckType(2); string itemType = _types[1]; if (!IsRawOrEnumOrClass(itemType)) { Error("list的 item类型不存在或者不是raw,enum,class类型:" + itemType); } } else if (type == "dict") { CheckType(3); string key = _types[1]; if (!Setting.RawTypes.Contains(key) && !EnumWrap.IsEnum(key)) { Error("非法的dict key类型:" + key); } string value = _types[2]; if (!IsRawOrEnumOrClass(value)) { Error("非法的dict value类型:" + value); } } } else { Error("未知类型:" + type); } } var git = _groups.GetEnumerator(); while (git.MoveNext()) { if (!GroupWrap.IsGroup(git.Current)) { Error("未知 Group:" + git.Current); } } //验证检查规则 if (_checkers != null) { var errorCheckers = new List <Checker>(); var checkers = _checkers; for (int k = 0; k < checkers.Count; k++) { if (!checkers[k].VerifyRule()) { errorCheckers.Add(checkers[k]); } } for (int i = 0; i < errorCheckers.Count; i++) { _checkers.Remove(errorCheckers[i]); } } }