diff --git a/src/AutoMapper.Extensions.EnumMapping/AutoMapper.Extensions.EnumMapping.csproj b/src/AutoMapper.Extensions.EnumMapping/AutoMapper.Extensions.EnumMapping.csproj index a70799f..b1fe87b 100644 --- a/src/AutoMapper.Extensions.EnumMapping/AutoMapper.Extensions.EnumMapping.csproj +++ b/src/AutoMapper.Extensions.EnumMapping/AutoMapper.Extensions.EnumMapping.csproj @@ -26,7 +26,7 @@ - + diff --git a/src/AutoMapper.Extensions.EnumMapping/EnumMapperConfigurationExpressionExtensions.cs b/src/AutoMapper.Extensions.EnumMapping/EnumMapperConfigurationExpressionExtensions.cs index 5d29d7b..d40c2c3 100644 --- a/src/AutoMapper.Extensions.EnumMapping/EnumMapperConfigurationExpressionExtensions.cs +++ b/src/AutoMapper.Extensions.EnumMapping/EnumMapperConfigurationExpressionExtensions.cs @@ -19,8 +19,13 @@ public static void EnableEnumMappingValidation(this IMapperConfigurationExpressi { if (context.TypeMap != null) { - var validator = context.TypeMap.Features.OfType().SingleOrDefault(); - validator?.Validate(context.TypeMap.Types); + foreach (var feature in context.TypeMap.Features) + { + if (feature is IEnumMappingValidationRuntimeFeature validator) + { + validator.Validate(context.TypeMap.Types); + } + } } }); } diff --git a/src/AutoMapper.Extensions.EnumMapping/Internal/EnumMappingFeature.cs b/src/AutoMapper.Extensions.EnumMapping/Internal/EnumMappingFeature.cs index 7ac0e53..92dc200 100644 --- a/src/AutoMapper.Extensions.EnumMapping/Internal/EnumMappingFeature.cs +++ b/src/AutoMapper.Extensions.EnumMapping/Internal/EnumMappingFeature.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using AutoMapper.Execution; using AutoMapper.Features; namespace AutoMapper.Extensions.EnumMapping.Internal @@ -21,14 +22,15 @@ public void Configure(TypeMap typeMap) throw new ArgumentException($"The type {typeMap.SourceType.FullName} can not be configured as an Enum, because it is not an Enum"); } - if (!typeMap.DestinationTypeToUse.IsEnum) + if (!typeMap.DestinationType.IsEnum) { - throw new ArgumentException($"The type {typeMap.DestinationTypeToUse.FullName} can not be configured as an Enum, because it is not an Enum"); + throw new ArgumentException($"The type {typeMap.DestinationType.FullName} can not be configured as an Enum, because it is not an Enum"); } - var enumValueMappings = CreateOverridedEnumValueMappings(typeMap.SourceType, typeMap.DestinationTypeToUse); + var enumValueMappings = CreateOverridedEnumValueMappings(typeMap.SourceType, typeMap.DestinationType); - typeMap.CustomMapExpression = new CustomMapExpressionFactory(enumValueMappings).Create(); + var lambdaExpression = new CustomMapExpressionFactory(enumValueMappings).Create(); + typeMap.TypeConverter = new ExpressionTypeConverter(lambdaExpression); typeMap.Features.Set(new EnumMappingValidationRuntimeFeature(enumValueMappings, EnumMappingType)); }