///////////////////////////////////////////////////////////////////////////// // File Description : 验证实体集合,封装了对实体的验证 // Copyright : joyin // ------------------------------------------------------------------------- // Date Created : Mar 26, 2010 // Author : jiangxinjun // ///////////////////////////////////////////////////////////////////////////// using System; using System.Collections.Generic; using System.Text; namespace HH.WMS.Entitys.Common { /// /// 验证实体集合 /// public class SimpleInvalidEntityInfo { /// /// 实体在集合的序号 /// public int IndexInList { get; set; } /// /// 错误信息 /// public List ErrorMessages { get; set; } } /// /// 验证实体集合 /// /// public class ValidatorListEntity { #region InvalidEntityInfo 实体错误信息 /// /// 实体错误信息 /// public class InvalidEntityInfo : SimpleInvalidEntityInfo { /// /// 实体 /// public TEntity Entity { get; set; } } #endregion #region 属性 private IList list; private Dictionary, string> predicates; private List invalidInfos; /// /// 错误信息 /// public List InvalidInfos { get { if (invalidInfos == null) { invalidInfos = new List.InvalidEntityInfo>(); } return invalidInfos; } } /// /// 建议错误信息 /// /// InvalidInfos转换的建议信息 public List SimpleInvalidInfos { get { if (InvalidInfos != null) { return InvalidInfos.ConvertAll(_ele => { return _ele; }); } return null; } } #endregion #region 公共方法 /// /// 构造函数 /// /// 要验证的初始化列表 public ValidatorListEntity(IList list) { this.list = list; predicates = new Dictionary, string>(); } /// /// 设置验证 /// /// 错误成立条件 /// 如果错误成立,显示的错误信息 /// public ValidatorListEntity SetValidate(Predicate predicate, string errorMsg) { predicates.Add(predicate, errorMsg); return this; } /// /// 验证集合 /// /// 是否成功,如果不成功,访问InvalidInfos获取错误数据 public bool Valid() { new List(this.list).ForEach(_entity => { ValidatorEntity = new ValidatorEntity(_entity); foreach (var predicate in predicates) { ValidatorEntity.Validate(predicate.Key, predicate.Value); } if (ValidatorEntity.ErrorMessages != null && ValidatorEntity.ErrorMessages.Count > 0) { //InvalidInfos.Add(new ValidatorListEntity.InvalidEntityInfo() //{ // IndexInList = this.list.IndexOf(_entity), // Entity = _entity, // ErrorMessages = validator.ErrorMessages //}); SetErrorMessages(_entity, ValidatorEntity); } }); return (InvalidInfos.Count == 0); } public ValidatorEntity ValidatorEntity { get; set; } public void SetErrorMessages(TEntity _entity, ValidatorEntity validator) { InvalidInfos.Add(new ValidatorListEntity.InvalidEntityInfo() { IndexInList = this.list.IndexOf(_entity), Entity = _entity, ErrorMessages = validator.ErrorMessages }); } #endregion } }