public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) { if (dataEntities.IsNullOrEmpty() || dataEntities.Length == 0) { return; } foreach (ExtendedDataEntity item in dataEntities) { DynamicObject requestDynamic = item.DataEntity; bool isCreate = Convert.ToBoolean(requestDynamic["FIsCreateApply"]); //是否生成佣金费用申请单 string costReqBillNo = Convert.ToString(requestDynamic["FCostApplyNo"]); //佣金费用申请单单号 bool ISCREATEOTHERAP = Convert.ToBoolean(requestDynamic["FISCREATEOTHERAP"]); //是否生成其他应付单 string OTHERAPNO = Convert.ToString(requestDynamic["FOTHERAPNO"]); //其他应付单号 bool ISCREATEBOUNS = Convert.ToBoolean(requestDynamic["FISCREATEBOUNS"]); //是否生成提点申请单 string BOUNSAPPLYBILLNO = Convert.ToString(requestDynamic["FBOUNSAPPLYBILLNO"]); //提点申请单号 bool ISCREATELOGISTICS = Convert.ToBoolean(requestDynamic["FISCREATELOGISTICS"]); //是否生成管销申请单 string LOGISTICSAPPLYBILLNO = Convert.ToString(requestDynamic["FLOGISTICSAPPLYBILLNO"]); //管销申请单号 string billNo = Convert.ToString(requestDynamic["BillNo"]); if (isCreate || ISCREATEOTHERAP || ISCREATEBOUNS || ISCREATELOGISTICS) { string msg = string.Format("单据:{0}配送出库单,已生成下游单据,不允许反审核,具体信息见单据资金池页签", billNo); var errInfo = new ValidationErrorInfo( item.BillNo, item.DataEntity["Id"].ToString(), item.DataEntityIndex, item.RowIndex, "SALOUTValid019", msg, " ", Kingdee.BOS.Core.Validation.ErrorLevel.Error); validateContext.AddError(item.DataEntity, errInfo); } } }
public override bool Validate(ValidateContext context) { BOMStruct bOMStruct = context.ValidateList as BOMStruct; if (bOMStruct != null) { this.SupportMultiConfig = context.ExtendProperty.GetValue(_.MultiConfiguration, false); foreach (DocStruct doc in bOMStruct.BOMView.Cast <DocView>().Where(p => !((DocStruct)p).STD_IsStandardParts)) { IList dbRelation = this.dvManager.SearchObjectRelationByParent(doc.RealityVerId); ArrayList arrayList = new ArrayList(5); IEnumerable <ChildStruct> children = from p in doc.DataView.ChildRelation where p.ChildNode != null && p.ParentNode != null select p; if (!this.ValidateRelation(dbRelation, (ObjectRelation DBR) => this.ObjectRelationExists(DBR, doc, children), doc, arrayList)) { return(false); } if (!BOMHelp.IsNullOrEmpty(arrayList)) { BOMHelp.Add <string, ArrayList>(this.dicDeleteSTDRelation, doc.RealityVerId, arrayList, (ArrayList il) => true); } } } return(true); }
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) { foreach (ExtendedDataEntity entity in dataEntities) { if ((Convert.ToString(entity["BUDGETCALENDARTYPE"]) == "1") && !(entity["ACID"] is DynamicObject)) { validateContext.AddError(entity, new ValidationErrorInfo("ACID", "", 0, 0, Convert.ToString(entity["ID"]), ResManager.LoadKDString("日历类型选择会计日历时,会计日历字段必录。", "0032056000017550", SubSystemType.FIN, new object[0]), ResManager.LoadKDString("生成预算期间", "0032056000017551", SubSystemType.FIN, new object[0]), ErrorLevel.Error)); } bool flag = false; IList <string> list = new List <string> { "YEAR", "HALFOFYEAR", "SEASON", "MONTH", "TENDAYS", "WEEKS", "DAYS" }; foreach (string str2 in list) { if (Convert.ToBoolean(entity[str2])) { flag = true; break; } } if (!flag) { validateContext.AddError(entity, new ValidationErrorInfo("ACID", "", 0, 0, Convert.ToString(entity["ID"]), ResManager.LoadKDString("生成预算期间,应当选择至少一个周期类型。", "0032056000017552", SubSystemType.FIN, new object[0]), ResManager.LoadKDString("生成预算期间", "0032056000017551", SubSystemType.FIN, new object[0]), ErrorLevel.Error)); } } }
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) { if (dataEntities.IsNullOrEmpty() || dataEntities.Length == 0) { return; } foreach (ExtendedDataEntity item in dataEntities) { DynamicObject requestDynamic = item.DataEntity; bool isCreate = Convert.ToBoolean(requestDynamic["FIsCreateApply"]); //是否生成费用申请单 string billNo = Convert.ToString(requestDynamic["BillNo"]); //收款单单号 string costReqBillNo = Convert.ToString(requestDynamic["FCostApplyNo"]); //费用申请单单号 DynamicObjectCollection Entry = requestDynamic["RECEIVEBILLENTRY"] as DynamicObjectCollection; string PurPoseNum = Convert.ToString(((DynamicObject)Entry[0]["PURPOSEID"])["Number"]); //门店加盟费:005 if (PurPoseNum.Equals("005") && isCreate) { string msg = string.Format("单据:{0}收付款用途包含门店加盟费,已生成费用申请单:{1},不允许反审核", billNo, costReqBillNo); var errInfo = new ValidationErrorInfo( item.BillNo, item.DataEntity["Id"].ToString(), item.DataEntityIndex, item.RowIndex, "ARValid019", msg, " ", Kingdee.BOS.Core.Validation.ErrorLevel.Error); validateContext.AddError(item.DataEntity, errInfo); } } }
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) { if (dataEntities.IsNullOrEmpty() || dataEntities.Length == 0) { return; } foreach (ExtendedDataEntity item in dataEntities) { DynamicObject requestDynamic = item.DataEntity; string reason = Convert.ToString(requestDynamic["FWinReason"]); if (reason.Equals(" ")) { string msg = string.Format("商机编号{0}输赢原因没填", requestDynamic["FBillNo"]); var errInfo = new ValidationErrorInfo( item.BillNo, item.DataEntity["Id"].ToString(), item.DataEntityIndex, item.RowIndex, "ARValid019", msg, " ", Kingdee.BOS.Core.Validation.ErrorLevel.Error); validateContext.AddError(item.DataEntity, errInfo); } } }
public bool CanExecute(IValidateRule rule, ValidateContext context) { return(string.IsNullOrEmpty(rule.RuleSet) || context.RuleSetList.IsEmptyOrNull() ? true : context.RuleSetList.Contains(rule.RuleSet)); }
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) { if (dataEntities == null || dataEntities.Length <= 0) { return; } foreach (var et in dataEntities) { var dyEntrys = et.DataEntity["POOrderEntry"] as DynamicObjectCollection; if (dyEntrys != null) { var count = 0; foreach (var dy in dyEntrys) { count += Convert.ToInt32(dy["Qty"]); } if (count > 10) { validateContext.AddError(et, new ValidationErrorInfo( "", Convert.ToString(et.DataEntity[0]), et.DataEntityIndex, et.RowIndex, "E1", string.Format("单据{0}数量超额,总数量不能超过10个,当前物料总数量为:{1}", et.BillNo, count), "数量超额检查")); } } } }
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) { if (dataEntities.IsNullOrEmpty() || dataEntities.Length == 0) { return; } foreach (ExtendedDataEntity item in dataEntities) { DynamicObject requestDynamic = item.DataEntity; if (Convert.ToInt32(requestDynamic["F_PAEZ_SFYQZF"]) == 0) { string msg = string.Format("单据:{0},未启用银企支付参数,不可通过银企进行付款", requestDynamic["BillNo"]); var errInfo = new ValidationErrorInfo( item.BillNo, item.DataEntity["Id"].ToString(), item.DataEntityIndex, item.RowIndex, "Valid019", msg, " ", Kingdee.BOS.Core.Validation.ErrorLevel.Error); validateContext.AddError(item.DataEntity, errInfo); } } }
public override void InitializeConfiguration(ValidateContext validateContext, Context ctx) { base.InitializeConfiguration(validateContext, ctx); if (validateContext.BusinessInfo != null) { EntityKey = validateContext.BusinessInfo.GetEntity(0).Key; } }
public static void AddMsg(ValidateContext validateContext, ExtendedDataEntity entity, string title, string msg, string displayToFieldKey = "", ErrorLevel errorLevel = 2) { if (displayToFieldKey.IsNullOrEmptyOrWhiteSpace()) { displayToFieldKey = validateContext.BusinessInfo.GetBillNoField().Key; } AddMsg(validateContext, entity, displayToFieldKey, entity["Id"].ToString(), title, msg, errorLevel); }
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) { if (Result != null && !Result.Success && !string.IsNullOrEmpty(Result.Message)) { ValidationErrorInfo info = new ValidationErrorInfo("FBillNo", Convert.ToString(new Guid()), 0, 0, FormId, Result.Message, ""); validateContext.AddError(new Guid(), info); } }
public void ModelValidation() { var result = ValidateContext.Validate <AppDbContext>(); foreach (var test in result) { Assert.True(test.WasSuccessful, $"{test.Area}: {test.Message}"); } }
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) { ReportSchemeService service = new ReportSchemeService(); foreach (ExtendedDataEntity entity in dataEntities) { this.DeleteValidator(ctx, validateContext, entity, service); } }
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) { BudgetFormulaService service = new BudgetFormulaService(); foreach (ExtendedDataEntity entity in dataEntities) { this.CheckFormula(ctx, validateContext, entity, service); } }
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null || dataEntities.Length == 0) { return; } List <long> dictErrMaterialId = new List <long>(); //取所有物料 List <long> listMaterialId = new List <long>(); foreach (ExtendedDataEntity entityObj in dataEntities) { DynamicObjectCollection collection = (DynamicObjectCollection)entityObj["Entity"]; //取酶活量小于等于于零的 var checkRows = collection.Where(f => Convert.ToDecimal(f["FJNUnitEnzymes"]) <= 0).ToList(); if (checkRows == null || checkRows.Count() <= 0) { continue; } foreach (DynamicObject rowObj in checkRows) { listMaterialId.Add((long)rowObj["MaterialId_Id"]); } } if (listMaterialId.Count > 0) { string sql = " select a.FMATERIALID from T_BD_MATERIAL a where exists (select 1 from TABLE(fn_StrSplit(@FMATERIALID, ',',1)) t where t.FID=a. FMATERIALID and a.FISMEASURE='1' ) "; SqlParam param = new SqlParam("@FMATERIALID", KDDbType.udt_inttable, listMaterialId.Distinct().ToArray()); using (IDataReader dr = DBUtils.ExecuteReader(this.Context, sql, param)) { while (dr.Read()) { if (dr != null) { dictErrMaterialId.Add(Convert.ToInt64(dr["FMATERIALID"])); } } } } foreach (ExtendedDataEntity entityObj in dataEntities) { DynamicObjectCollection collection = (DynamicObjectCollection)entityObj["Entity"]; foreach (DynamicObject rowObj in collection) { if (dictErrMaterialId.Contains((long)rowObj["MaterialId_Id"])) { ValidationErrorInfo errinfo = new ValidationErrorInfo("FMATERIALID", Convert.ToString(entityObj.DataEntity["Id"]), entityObj.DataEntityIndex, Convert.ToInt32(rowObj["Id"]), "SubmitValidator", "第" + Convert.ToString(rowObj["Seq"]) + "行启用双计量,单位酶活必须大于0", "校验失败", ErrorLevel.Error); validateContext.AddError(entityObj, errinfo); } } } }
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) { foreach (ExtendedDataEntity entity in dataEntities) { if (!ServiceFactory.GetService <IReportSchemeService>(base.Context).CheckSampleDistribute(base.Context, entity["Id"].ToString())) { validateContext.AddError(entity, new ValidationErrorInfo("FNumber", "FRptID", entity.DataEntityIndex, 0, Convert.ToString(entity["ID"]), "一个模板样式方案只能在一个组织/方案下,存在一次", "预算模版反禁用", ErrorLevel.Error)); } } }
private void CheckFormula(Context ctx, ValidateContext validateContext, ExtendedDataEntity entity, BudgetFormulaService service) { string formula = Convert.ToString(entity["Express"]); if (!service.ValidityFormula(formula)) { string title = ResManager.LoadKDString("合法性校验", "003286000011212", SubSystemType.FIN, new object[0]); string msg = ResManager.LoadKDString("公式设置不正确,请重新设置!", "003286000011305", SubSystemType.FIN, new object[0]); CommonValidate.AddMsg(validateContext, entity, title, msg, "", ErrorLevel.Error); } }
public async void Test_Validator_Validate() { var v = new Validator(_Validation); var rule = new ValidateRule(_Validation) { ValidateAsyncFunc = (c, name, error) => { var f = new ValidateFailure() { Name = name, Error = error, Value = c }; return(Task.FromResult <IValidateResult>(new ValidateResult(new List <ValidateFailure>() { f }))); } }; var context = new ValidateContext() { RuleSelector = new RuleSelector() }; var result = await v.ValidateAsync(context); Assert.NotNull(result); Assert.True(result.IsValid); Assert.NotNull(result.Failures); Assert.Equal(0, result.Failures.Count); v.SetRules(new List <ValidateRule>() { rule }); result = await v.ValidateAsync(context); Assert.NotNull(result); Assert.False(result.IsValid); Assert.NotNull(result.Failures); Assert.Equal(1, result.Failures.Count); rule.ValidateAsyncFunc = (c, name, error) => { return(Task.FromResult <IValidateResult>(new ValidateResult())); }; result = await v.ValidateAsync(context); Assert.NotNull(result); Assert.True(result.IsValid); Assert.NotNull(result.Failures); Assert.Equal(0, result.Failures.Count); }
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) { foreach (ExtendedDataEntity entity in dataEntities) { DynamicObjectCollection objects = entity["BM_Sheet"] as DynamicObjectCollection; if ((objects == null) || (objects.Count <= 0)) { validateContext.AddError(entity, new ValidationErrorInfo("FNumber", "FRptID", entity.DataEntityIndex, 0, Convert.ToString(entity["ID"]), string.Format(ResManager.LoadKDString("预算模板 {0} 未编辑,不允许提交!", "0032056000021823", SubSystemType.FIN, new object[0]), entity["Name"].ToString()), string.Format(ResManager.LoadKDString("预算模板 {0} 未编辑,不允许提交!", "0032056000021823", SubSystemType.FIN, new object[0]), entity["Name"].ToString()), ErrorLevel.Error)); } } }
/// <summary> /// 客户管理员 /// </summary> /// <param name="dataEntity"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> /// <param name="FID"></param> private void Act_CtrlCustAdmin(ExtendedDataEntity dataEntity, ValidateContext validateContext, Context ctx, string FID) { string FCustId = dataEntity["FCustName"] == null ? "0" : (dataEntity["FCustName"] as DynamicObject)["Id"].ToString(); if (FCustId == "0") { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "客户不能为空!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } string sql = string.Format("SELECT FISTRADE FROM T_BD_CUSTOMER WHERE FCUSTID='{0}'", FCustId); var objs = DBUtils.ExecuteDynamicObject(ctx, sql); if (objs.Count > 0) { string FISTRADE = objs[0]["FISTRADE"].ToString(); if (FISTRADE == "0" || FISTRADE == "") { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "当前客户为非交易客户,请转为交易客户后再进行提交!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } else { string FCustName = dataEntity["FCustName"] == null ? "" : (dataEntity["FCustName"] as DynamicObject)["Name"].ToString(); sql = "SELECT FCUSTID FROM T_BD_CUSTOMER_L WHERE FNAME='" + FCustName + "' AND FLOCALEID='2052'"; objs = DBUtils.ExecuteDynamicObject(ctx, sql); if (objs.Count < 1) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "当前客户还未进行分配,请分配到相应组织后再进行提交!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } } }
private void DeleteValidator(Context ctx, ValidateContext validateContext, ExtendedDataEntity entity, ReportSchemeService service) { long reportSchemeId = Convert.ToInt64(entity["Id"]); bool flag = service.IsReportSchemeUsed(ctx, reportSchemeId); bool ctrlRuleBySchemeId = service.GetCtrlRuleBySchemeId(ctx, reportSchemeId); if (flag || ctrlRuleBySchemeId) { string.Format("模板样式方案 {0} 已经被引用,不允许删除!", entity["Name"]); validateContext.AddError(entity, new ValidationErrorInfo("Name", "Id", entity.DataEntityIndex, 0, Convert.ToString(entity["Id"]), "该模板样式方案已经被其他单据引用,不能删除!", "删除:", ErrorLevel.Error)); } }
public override void Validate(BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, BOS.Context ctx) { Dictionary <string, decimal> dic = new Dictionary <string, decimal>(); foreach (var row in dataEntities) { DynamicObject material = row["MaterialID"] as DynamicObject; decimal qty = Convert.ToDecimal(row["Qty"]); decimal maxQty = Convert.ToDecimal(material["F_PAEZ_maxSaleQty"]); Boolean isLimitSaleQty = Convert.ToBoolean(material["F_PAEZ_isLimitSaleQty"]); DateTime startDate = Convert.ToDateTime(material["F_PAEZ_startDate"]); int seq = Convert.ToInt32(row["Seq"]); if (null == material || !isLimitSaleQty || startDate > DateTime.Now || Convert.ToString(startDate) == "0001-01-01 00:00:00") { continue; } //用字典记录下上面物料的数量 最大销量是这个单据上所有数量 + 其它已经审核 + 其它审核中 的数量 string number = material["Number"].ToString(); if (dic.ContainsKey(number)) { decimal qty1 = dic[number]; dic.Remove(number); dic.Add(number, qty1 + qty); } else { dic.Add(number, qty); } string sql = string.Format(@"SELECT sum(b.FQTY) qty FROM T_SAL_ORDER a inner join T_SAL_ORDERENTRY b on a.fid =b.fid WHERE b.FMATERIALID ='{0}' AND a.FDOCUMENTSTATUS in ('B','C') and a.FDATE>='{1}'", material["Id"], startDate.Date); DynamicObjectCollection saleOrderCol = DBUtils.ExecuteDynamicObject(this.Context, sql); if (saleOrderCol.Count > 0) { qty = dic[number] + Convert.ToDecimal(saleOrderCol[0]["qty"]); } if (qty > maxQty) { ValidationErrorInfo errinfo = new ValidationErrorInfo( "FSeq", //单据体序号标识 Convert.ToString(row.DataEntity["Id"]), row.DataEntityIndex, Convert.ToInt32(row["Id"]), "SubmitValidator", // "序号为" + seq + "这行数量大于此物料的最大销量,不允许提交当前销售订单!请更换其他产品.", //提示信息内容 "校验失败", //提示信息标题 ErrorLevel.Error); //添加错误信息到validateContext中 validateContext.AddError(row, errinfo); } } }
public async Task <IValidateResult> ValidateAsyncByFunc(ValidateContext context) { IValidateResult result = await ValidateAsyncFunc(context, ValueName, Error); if (NextRuleList.IsEmptyOrNull() || (!result.IsValid && context.Option != ValidateOption.Continue)) { return(result); } ValidateNextRuleList(context, result); return(result); }
private async void ValidateNextRule(ValidateContext context, IValidateResult result, int index, IValidateRule rule) { var nextResult = await rule.ValidateAsync(context); if (!nextResult.IsValid) { foreach (var failure in nextResult.Failures) { failure.Name = string.Format(string.IsNullOrEmpty(failure.Name) ? "{0}[{1}]{2}" : "{0}[{1}].{2}", ValueName, index, failure.Name); } } result.Merge(nextResult.Failures); }
public override bool Validate(ValidateContext context) { //var doc = context.ValidateObject as DocStruct; //if (doc != null) //{ // if (DateTime.Now >= GUOQI) // { // doc.SetDocStateL(false, "red", "程序已经过期,请联系实施人员!"); // return false; // } //} return(true); }
private void ValidateElement(ValidateContext context, IValidateResult result, int index) { foreach (var rule in NextRuleList) { if (result.IsValid || context.Option == ValidateOption.Continue) { ValidateNextRule(context, result, index, rule); } else { break; } } }
public void Test_RuleSelector() { var rule = new TestValidateRule(); var context = new ValidateContext(); var selector = new RuleSelector(); m_Data.ForEach(i => { rule.RuleSet = i.Item1; context.RuleSetList = i.Item2; Assert.Equal(i.Item3, selector.CanExecute(rule, context)); }); }
public override bool Validate(ValidateContext context) { DocStruct docStruct = context.ValidateObject as DocStruct; BOMStruct bOMStruct = context.ValidateList as BOMStruct; if (docStruct != null && bOMStruct != null) { List <string> list = new List <string>(); if (docStruct.IsConfigPart && !docStruct.ContainsKey(_.DELETE_CONFIG) && ValidateCreoConfig.IsZuBiao(docStruct) &&//不是族表实例的时候。判断不了实例的添加与删除 !comp_arr.Contains(docStruct.FileName)) //每一个文件只比较一次 { comp_arr.Add(docStruct.FileName); var Configs = docStruct.GetString(ZuBiaoNames).Trim().Split(';'); Configs = Configs.Concat(new string[] { GetFileWithoutExt(docStruct.FileName) }).ToArray(); foreach (DocConfig cfg in from p in this.docconfigManager.GetStandardPartsConfigByDVerId(docStruct.RealityVerId) where !string.IsNullOrEmpty(p.ConfigName) select p) { if (!Configs.Any((string p) => BOMHelp.IsEquals(p, cfg.ConfigName, true))) { if (docStruct.IsBorrow || BOMHelp.Contains(docStruct.OperateType, EntityOperateType.NotCheckOut)) { string msg = string.Format("{0}:不允许修改文档族表实例", docStruct.IsBorrow ? "借用" : "未检出"); this.DealDocStruct(docStruct, delegate(DocStruct p) { p.SetDocStateL(false, "red", msg); }); return(false); } if (!list.Contains(cfg.ConfigID)) { list.Add(cfg.ConfigID); } } } if (list.Count > 0) { docStruct.WriteValue(_.DELETE_CONFIG, string.Join(",", list.ToArray())); } } if (context.CurIndex == bOMStruct.Count && !this.ValidateConfigUse(bOMStruct)) { return(false); } } return(true); }
public override bool Validate(ValidateContext context) { var doc = context.ValidateObject as DocStruct; if (doc != null) { var doccopy = BOMHelp.GetOValueFromDictionary(context.CurScopeProperty, _.CURVALIDATEDOCCOPY) as DocumentCopy; if (doccopy != null) { doc.WriteValue("__FileMD5__DB", doccopy.FileMD5); } } return(true); }
public override Task <IValidateResult> ValidateAsync(ValidateContext context) { ParamHelper.CheckParamNull(context, "context", "Can't be null"); IValidateResult result = Validation.Provider.GetService <IValidateResult>(); var list = context.ValidateObject as IEnumerable; if (Condition == null || Condition(context)) { if (list != null) { ValidateElementList(context, result, list); } } return(Task.FromResult(result)); }