You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让ValidationsResult类的IsValid只读并随Errors自动变化?

实现只读的IsValid属性并自动根据Errors状态变更取值

你原来的代码存在两个关键问题:一是string[]的Append方法不会修改原数组,导致AddError方法根本没真正添加错误;二是IsValid的可读写特性不符合自动关联错误状态的需求。以下是修正后的实现方案:

public class ValidationsResult
{
    // 只读计算属性,实时根据Errors集合状态判断有效性
    public bool IsValid => !Errors.Any();        

    // 改用List<string>实现动态错误集合,数组无法直接修改长度
    public List<string> Errors { get; } = new List<string>();

    public void AddError(string error)
    {
        Errors.Add(error);
    }
}

改动细节说明:

  • IsValid改为只读计算属性:移除setter,用表达式体写法实现get逻辑,每次访问IsValid时都会实时检查Errors是否包含元素——无错误时返回true,存在错误时返回false,完全自动同步状态。
  • 替换Errors为List:数组是固定长度结构,Append方法只会生成新数组但不会修改原数组,导致原AddError方法无效。换成List<string>并初始化后,Add方法可直接向集合中添加错误,正确维护错误列表。
  • 彻底实现只读特性:IsValid不再允许手动赋值,状态完全由错误集合的内容决定,符合需求。

内容的提问来源于stack exchange,提问作者iMSn20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:16:14