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.Linq;
using JetBrains.Annotations;
using Volo.Abp.Data;
using Volo.Abp.DynamicProxy;
@ -12,18 +12,14 @@ namespace Volo.Abp.ObjectExtending
[NotNull]
public static List<ValidationResult> GetValidationErrors(
[NotNull] IHasExtraProperties extensibleObject,
[CanBeNull] IServiceProvider serviceProvider = null)
[CanBeNull] ValidationContext objectValidationContext = null)
{
var validationErrors = new List<ValidationResult>();
AddValidationErrors(
extensibleObject,
new ValidationContext(
extensibleObject,
serviceProvider,
new Dictionary<object, object>()
),
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<ValidationResult> validationErrors)
[NotNull] List<ValidationResult> 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<object, object>()
);
}
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);
}
}
}
}

Loading…
Cancel
Save