You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kev/Drawer/DataValidator/Core/ValidationResult.cs

76 lines
2.2 KiB
C#

1 month ago
using System.Reflection.Metadata.Ecma335;
namespace Validation.Core
{
/// <summary>
/// 校验结果
/// </summary>
public class ValidationResult
{
/// <summary>
/// 是否合法
/// </summary>
public bool IsValid { get; set; } = true;
/// <summary>
/// 错误
/// </summary>
public List<ValidationMessage> Errors { get; set; } = new List<ValidationMessage>();
/// <summary>
/// 警告
/// </summary>
public List<ValidationMessage> Warnings { get; set; } = new List<ValidationMessage>();
/// <summary>
/// 添加错误信息
/// </summary>
/// <param name="error">错误信息</param>
public void AddError(int row, string error)
{
Errors.Add(new ValidationMessage(row, error));
IsValid = false;
}
/// <summary>
/// 添加警告信息
/// </summary>
/// <param name="warning">警告信息</param>
public void AddWarning(int row, string warning)
{
Warnings.Add(new ValidationMessage(row, warning));
IsValid = false;
}
/// <summary>
/// 返回验证结果的字符串表示
/// </summary>
/// <returns>包含验证结果详细信息的字符串</returns>
public override string ToString()
{
var sb = new System.Text.StringBuilder();
sb.AppendLine($"验证结果: {(IsValid ? "" : "")}");
sb.AppendLine($"错误数量: {Errors.Count}");
sb.AppendLine($"警告数量: {Warnings.Count}");
AppendMessages(sb, "错误", Errors);
AppendMessages(sb, "警告", Warnings);
return sb.ToString();
}
private void AppendMessages(System.Text.StringBuilder sb, string messageType, List<ValidationMessage> messages)
{
if (messages.Count > 0)
{
sb.AppendLine($"{messageType}详情:");
foreach (var message in messages)
{
sb.AppendLine($" 第{message.RowIndex}行: {message.Message}");
}
}
}
}
}