Skip to content

Commit 9b5e191

Browse files
committed
aggregate validation exceptions
1 parent 3fe9728 commit 9b5e191

4 files changed

+11
-7
lines changed

Diff for: src/AutoMapper.Extensions.EnumMapping/EnumMapperConfigurationExpressionExtensions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public static void EnableEnumMappingValidation(this IMapperConfigurationExpressi
1818
{
1919
var validator = context.TypeMap?.Features.Get<EnumMappingValidationRuntimeFeatureProxy>();
2020

21-
validator?.Validate(context.TypeMap.Types);
21+
validator?.Validate(context);
2222
});
2323
}
2424
}

Diff for: src/AutoMapper.Extensions.EnumMapping/Internal/EnumMappingValidationRuntimeFeature.cs

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Text;
4+
using AutoMapper.Configuration;
45
using AutoMapper.Internal;
56

67
namespace AutoMapper.Extensions.EnumMapping.Internal
@@ -22,9 +23,10 @@ public void Seal(IGlobalConfiguration configurationProvider)
2223
{
2324
}
2425

25-
void IEnumMappingValidationRuntimeFeature.Validate(TypePair typePair)
26+
void IEnumMappingValidationRuntimeFeature.Validate(ValidationContext validationContext)
2627
{
2728
var hasMappingError = false;
29+
var typePair = validationContext.TypeMap.Types;
2830
var sourceEnumMappings = Enum.GetValues(typePair.SourceType);
2931

3032
var messageBuilder = new StringBuilder($"Missing enum mapping from {typePair.SourceType.FullName} to {typePair.DestinationType.FullName} based on {_enumMappingType}");
@@ -43,7 +45,7 @@ void IEnumMappingValidationRuntimeFeature.Validate(TypePair typePair)
4345

4446
if (hasMappingError)
4547
{
46-
throw new AutoMapperConfigurationException(messageBuilder.ToString());
48+
validationContext.Exceptions.Add(new AutoMapperConfigurationException(messageBuilder.ToString()));
4749
}
4850
}
4951
}

Diff for: src/AutoMapper.Extensions.EnumMapping/Internal/EnumMappingValidationRuntimeFeatureProxy.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using AutoMapper.Internal;
1+
using AutoMapper.Configuration;
2+
using AutoMapper.Internal;
23

34
namespace AutoMapper.Extensions.EnumMapping.Internal;
45

@@ -13,5 +14,5 @@ public EnumMappingValidationRuntimeFeatureProxy(IEnumMappingValidationRuntimeFea
1314

1415
public void Seal(IGlobalConfiguration configurationProvider) => _innerValidationRuntimeFeature.Seal(configurationProvider);
1516

16-
public void Validate(TypePair typePair) => _innerValidationRuntimeFeature.Validate(typePair);
17+
public void Validate(ValidationContext validationContext) => _innerValidationRuntimeFeature.Validate(validationContext);
1718
}
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
using AutoMapper.Features;
1+
using AutoMapper.Configuration;
2+
using AutoMapper.Features;
23
using AutoMapper.Internal;
34

45
namespace AutoMapper.Extensions.EnumMapping.Internal
56
{
67
internal interface IEnumMappingValidationRuntimeFeature : IRuntimeFeature
78
{
8-
void Validate(TypePair typePair);
9+
void Validate(ValidationContext validationContext);
910
}
1011
}

0 commit comments

Comments
 (0)