From 2d35a8be962cff5b0dfbd8dbaae7fb50557fa749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 11 Apr 2020 16:24:21 +0300 Subject: [PATCH] Refactor ExtensibleObjectValidator --- .../ExtensibleObjectValidator.cs | 57 ++++++++++--------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ExtensibleObjectValidator.cs b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ExtensibleObjectValidator.cs index 9b48798972..f29f334a8d 100644 --- a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ExtensibleObjectValidator.cs +++ b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ExtensibleObjectValidator.cs @@ -1,6 +1,6 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.Linq; using JetBrains.Annotations; using Volo.Abp.Data; using Volo.Abp.DynamicProxy; @@ -12,18 +12,14 @@ namespace Volo.Abp.ObjectExtending [NotNull] public static List GetValidationErrors( [NotNull] IHasExtraProperties extensibleObject, - [CanBeNull] IServiceProvider serviceProvider = null) + [CanBeNull] ValidationContext objectValidationContext = null) { var validationErrors = new List(); AddValidationErrors( extensibleObject, - new ValidationContext( - extensibleObject, - serviceProvider, - new Dictionary() - ), - validationErrors + validationErrors, + objectValidationContext ); return validationErrors; @@ -31,13 +27,21 @@ namespace Volo.Abp.ObjectExtending public static void AddValidationErrors( [NotNull] IHasExtraProperties extensibleObject, - [NotNull] ValidationContext validationContext, - [NotNull] List validationErrors) + [NotNull] List validationErrors, + [CanBeNull] ValidationContext objectValidationContext = null) { Check.NotNull(extensibleObject, nameof(extensibleObject)); - Check.NotNull(validationContext, nameof(validationContext)); Check.NotNull(validationErrors, nameof(validationErrors)); + if (objectValidationContext == null) + { + objectValidationContext = new ValidationContext( + extensibleObject, + null, + new Dictionary() + ); + } + var objectType = ProxyHelper.UnProxy(extensibleObject).GetType(); var objectExtensionInfo = ObjectExtensionManager.Instance @@ -50,23 +54,24 @@ namespace Volo.Abp.ObjectExtending foreach (var propertyInfo in objectExtensionInfo.GetProperties()) { - if (propertyInfo.ValidationAttributes.IsNullOrEmpty()) - { - continue; - } - - var validationContext2 = new ValidationContext(extensibleObject, validationContext, null) + if (propertyInfo.ValidationAttributes.Any()) { - DisplayName = propertyInfo.Name, - MemberName = propertyInfo.Name - }; + var propertyValidationContext = new ValidationContext(extensibleObject, objectValidationContext, null) + { + DisplayName = propertyInfo.Name, + MemberName = propertyInfo.Name + }; - foreach (var attribute in propertyInfo.ValidationAttributes) - { - var result = attribute.GetValidationResult(extensibleObject.GetProperty(propertyInfo.Name), validationContext2); - if (result != null) + foreach (var attribute in propertyInfo.ValidationAttributes) { - validationErrors.Add(result); + var result = attribute.GetValidationResult( + extensibleObject.GetProperty(propertyInfo.Name), + propertyValidationContext + ); + if (result != null) + { + validationErrors.Add(result); + } } } }