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));
}