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.
76 lines
2.2 KiB
C#
76 lines
2.2 KiB
C#
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}");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|