private bool Check(FDict data) { bool isOk = true; var dict = data.Values; foreach (var item in dict) { bool flagk = false; bool flagv = false; bool hasKey = false; bool hasValue = false; for (int i = 0; i < _ranges.Length; i++) { var info = _ruleTable[i]; var range = _ranges[i]; if (info._isKey) { flagk |= SwitchData(item.Key, item.Key.Define.OriginalType, range, info); hasKey |= true; } else if (info._isValue) { flagv |= SwitchData(item.Value, item.Value.Define.OriginalType, range, info); hasValue |= true; } } if (hasKey && hasValue) { isOk &= flagk && flagv; } else if (hasKey && !hasValue) { isOk &= flagk; } else if (!hasKey && hasValue) { isOk &= flagv; } else { Error("Range检查规则:程序Bug,未检查出规则配置错误!"); } } return(isOk); }
private bool Check(FDict data, RefRule rule, RuleInfo info) { bool isOk = true; var dict = data.Values; foreach (var item in dict) { if (info._isKey) { isOk &= Check(item.Key, rule); } if (info._isValue) { isOk &= Check(item.Value, rule); } } return(isOk); }
// 检查集合中文件路径是否存在 // key|Value均可作该检查 private bool Check(FDict data) { bool isOk = true; var dict = (data as FDict).Values; foreach (var item in dict) { bool flagk = false; bool flagv = false; bool hasKey = false; bool hasValue = false; for (int i = 0; i < _ruleTable.Length; i++) { RuleInfo info = _ruleTable[i]; if (info._isKey) { flagk |= Check(item.Key, info); hasKey |= true; } else if (info._isValue) { flagv |= Check(item.Value, info); hasValue |= true; } } if (hasKey && hasValue) { isOk &= flagk && flagv; } else if (hasKey && !hasValue) { isOk &= flagk; } else if (!hasKey && hasValue) { isOk &= flagv; } else { Error("File检查规则:程序Bug,未检查出规则配置错误!"); } } return(isOk); }
public override void GetDict(FDict data, FieldWrap define) { FieldWrap key = define.GetKeyDefine(); FieldWrap value = define.GetValueDefine(); while (!IsSectionEnd()) { var dk = Data.Create(data.Host, key, this); var dv = Data.Create(data.Host, value, this); if (!data.Values.ContainsKey(dk)) { data.Values.Add(dk, dv); } else { Error($"字段:{define.Name} Key:{dk} 重复"); } } }
/// <summary> /// 集合内部数据是否唯一 /// key默认已检查,该功能仅检查value /// </summary> private bool Check(FDict data) { var hashValue = new HashSet <Data>(data.Values.Values); return(_ruleTable.Length == 0 || hashValue.Count == data.Values.Count); }
public abstract void GetDict(FDict data, FieldWrap define);