如何让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
相关产品推荐
相关产品推荐

