Browse Source

Refactor ExtensibleObjectValidator

pull/3561/head
Halil İbrahim Kalkan 6 years ago
parent
commit
2d35a8be96
  1. 57
      framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ExtensibleObjectValidator.cs

57
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.ComponentModel.DataAnnotations;
using System.Linq;
using JetBrains.Annotations; using JetBrains.Annotations;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.DynamicProxy; using Volo.Abp.DynamicProxy;
@ -12,18 +12,14 @@ namespace Volo.Abp.ObjectExtending
[NotNull] [NotNull]
public static List<ValidationResult> GetValidationErrors( public static List<ValidationResult> GetValidationErrors(
[NotNull] IHasExtraProperties extensibleObject, [NotNull] IHasExtraProperties extensibleObject,
[CanBeNull] IServiceProvider serviceProvider = null) [CanBeNull] ValidationContext objectValidationContext = null)
{ {
var validationErrors = new List<ValidationResult>(); var validationErrors = new List<ValidationResult>();
AddValidationErrors( AddValidationErrors(
extensibleObject, extensibleObject,
new ValidationContext( validationErrors,
extensibleObject, objectValidationContext
serviceProvider,
new Dictionary<object, object>()
),
validationErrors
); );
return validationErrors; return validationErrors;
@ -31,13 +27,21 @@ namespace Volo.Abp.ObjectExtending
public static void AddValidationErrors( public static void AddValidationErrors(
[NotNull] IHasExtraProperties extensibleObject, [NotNull] IHasExtraProperties extensibleObject,
[NotNull] ValidationContext validationContext, [NotNull] List<ValidationResult> validationErrors,
[NotNull] List<ValidationResult> validationErrors) [CanBeNull] ValidationContext objectValidationContext = null)
{ {
Check.NotNull(extensibleObject, nameof(extensibleObject)); Check.NotNull(extensibleObject, nameof(extensibleObject));
Check.NotNull(validationContext, nameof(validationContext));
Check.NotNull(validationErrors, nameof(validationErrors)); Check.NotNull(validationErrors, nameof(validationErrors));
if (objectValidationContext == null)
{
objectValidationContext = new ValidationContext(
extensibleObject,
null,
new Dictionary<object, object>()
);
}
var objectType = ProxyHelper.UnProxy(extensibleObject).GetType(); var objectType = ProxyHelper.UnProxy(extensibleObject).GetType();
var objectExtensionInfo = ObjectExtensionManager.Instance var objectExtensionInfo = ObjectExtensionManager.Instance
@ -50,23 +54,24 @@ namespace Volo.Abp.ObjectExtending
foreach (var propertyInfo in objectExtensionInfo.GetProperties()) foreach (var propertyInfo in objectExtensionInfo.GetProperties())
{ {
if (propertyInfo.ValidationAttributes.IsNullOrEmpty()) if (propertyInfo.ValidationAttributes.Any())
{
continue;
}
var validationContext2 = new ValidationContext(extensibleObject, validationContext, null)
{ {
DisplayName = propertyInfo.Name, var propertyValidationContext = new ValidationContext(extensibleObject, objectValidationContext, null)
MemberName = propertyInfo.Name {
}; DisplayName = propertyInfo.Name,
MemberName = propertyInfo.Name
};
foreach (var attribute in propertyInfo.ValidationAttributes) foreach (var attribute in propertyInfo.ValidationAttributes)
{
var result = attribute.GetValidationResult(extensibleObject.GetProperty(propertyInfo.Name), validationContext2);
if (result != null)
{ {
validationErrors.Add(result); var result = attribute.GetValidationResult(
extensibleObject.GetProperty(propertyInfo.Name),
propertyValidationContext
);
if (result != null)
{
validationErrors.Add(result);
}
} }
} }
} }

Loading…
Cancel
Save