public bool Check <T>(ScriptableObjectBase table, ICollection <T> values, string keyFieldName) where T : TableClassBase { string tableName = table.GetTableName(); // 是否有自定义策略 return(customCheckers[tableName].Check(table, values, keyFieldName)); }
public void Check <T>(ScriptableObjectBase table, ICollection <T> values, string keyFieldName = null) where T : TableClassBase { if (values.Count == 0) { return; } string tableName = table.GetTableName(); foreach (var oneStrategy in strategies) { if (oneStrategy.Contains(tableName)) { oneStrategy.Check(table, values, keyFieldName); break; } } }
public bool Check <T>(ScriptableObjectBase table, ICollection <T> values, string keyFieldName) where T : TableClassBase { // 是否这个table的配置检测 string tableName = table.GetTableName(); var tableConfig = GetTableConfig(tableName); if (tableConfig == null) { return(true); } bool success = true; // ValidateXmlConfig已经做过提示了, 所以这里只做数据验证提示 foreach (var fieldConfig in tableConfig.FieldCheckConfigs) { string fieldName = Utility.TypeRelate.CorrectFieldName(fieldConfig.FieldName); // 是否有该字段的属性 var propertyInfo = typeof(T).GetProperty(fieldName); if (propertyInfo == null) { continue; } foreach (var fieldValidater in fieldConfig.ValidateConfigs) { // 是否存在验证node var validateNode = fieldValidater.ToValidateNode(); if (validateNode == null) { continue; } // 验证约束 if (!validateNode.Constraint(propertyInfo.PropertyType)) { continue; } bool keyExist = !string.IsNullOrEmpty(keyFieldName); int row = 1; foreach (var oneValue in values) { string val = propertyInfo.GetValue(oneValue, null).ToString(); if (!validateNode.Validate(propertyInfo.PropertyType, val)) { if (keyExist) { string keyValue = oneValue.GetPropertyValue(keyFieldName).ToString(); Debug.LogError( string.Format( "#TableCheck# 表格[{0}]主键为[{1}({2})]行[{3}]列的值[{4}]不能通过[{5}]验证 ", tableName, keyFieldName, keyValue, fieldName, val, validateNode.GetDesc())); } else { Debug.LogError( string.Format( "#TableCheck# 表格[{0}]第[{1}]行[{2}]列的值[{3}]不能通过[{4}]验证 ", tableName, row.ToString(), fieldName, val, validateNode.GetDesc())); } } row++; } success = false; } } return(success); }