//metoda pomocnicza sprawdzająca występowanie błędów private static bool HasAnyErrors(InsERT.Mox.Validation.IValidationMetadataStore store, ITypedDataErrorInfo errorInfo) { return (errorInfo != null && ( errorInfo.Errors.Any() || errorInfo.MemberErrors.Any() )); }
//metoda pomocnicza zbierająca informacje o błędach private static void PodajBledy(this InsERT.Mox.BusinessObjects.IBusinessObject obiektBiznesowy, InsERT.Mox.Validation.IValidationMetadataStore store, List <BladInfo> bledy) { HashSet <ITypedDataErrorInfo> invalidData = new HashSet <ITypedDataErrorInfo>(); ((InsERT.Mox.DataAccess.IGetDataDomain)obiektBiznesowy).DataDomain.TraverseData( obiektBiznesowy.Data, (o) => { ITypedDataErrorInfo dataErrorInfoEx = o as ITypedDataErrorInfo; if (HasAnyErrors(store, dataErrorInfoEx)) { invalidData.Add(dataErrorInfoEx); } return(true); }); foreach (var encjaZBledami in invalidData) { foreach (var bladNaCalejEncji in encjaZBledami.Errors) { StringBuilder sb = new StringBuilder(3); sb.AppendLine(bladNaCalejEncji.ToString()); sb.Append(" na encjach:" + encjaZBledami.GetType().Name); DataErrorType errorType = store.GetEntryForClrType(bladNaCalejEncji.GetType()); bledy.Add(new BladInfo(sb.ToString(), errorType.Severity)); } foreach (var bladNaKonkretnychPolach in encjaZBledami.MemberErrors) { StringBuilder sb = new StringBuilder(3); sb.AppendLine(bladNaKonkretnychPolach.Key.ToString()); sb.AppendLine(" na polach:"); sb.AppendLine(string.Join(", ", bladNaKonkretnychPolach.Select(b => encjaZBledami.GetType().Name + "." + b))); DataErrorType errorType = store.GetEntryForClrType(bladNaKonkretnychPolach.Key.GetType()); bledy.Add(new BladInfo(sb.ToString(), errorType.Severity)); } } }