The AutoMapper.Extensions.EnumMapping library gives you control about your enum values mappings. It is possible to create a custom type converter for every enum.
This library supports mapping enums values like properties.
You should install AutoMapper.Extensions.EnumMapping with NuGet:
Install-Package AutoMapper.Extensions.EnumMapping
Or via the .NET Core command line interface:
dotnet add package AutoMapper.Extensions.EnumMapping
Either commands, from Package Manager Console or .NET Core CLI, will download and install AutoMapper.Extensions.EnumMapping. AutoMapper.Extensions.EnumMapping has no dependencies.
Install via NuGet first: Install-Package AutoMapper.Extensions.EnumMapping
To use it:
For method CreateMap
this library provide a ConvertUsingEnumMapping
method. This method add all default mappings from source to destination enum values.
If you want to change some mappings, then you can use MapValue
method. This is a chainable method.
Default the enum values are mapped by value (MapByValue()
), but it is possible to map by name calling MapByName()
. For enums which does not have same values and names, you can use MapByCustom()
. Then you have to add a MapValue
for every source enum value.
using AutoMapper.Extensions.EnumMapping; public enum Source { Default = 0, First = 1, Second = 2 } public enum Destination { Default = 0, Second = 2 } internal class YourProfile : Profile { public YourProfile() { CreateMap<Source, Destination>() .ConvertUsingEnumMapping(opt => opt // optional: .MapByValue() or MapByName(), without configuration MapByValue is used .MapValue(Source.First, Destination.Default)) .ReverseMap(); // to support Destination to Source mapping, including custom mappings of ConvertUsingEnumMapping } } ...
AutoMapper provides a nice tooling for validating typemaps. This library adds an extra EnumMapperConfigurationExpressionExtensions.EnableEnumMappingValidation
extension method to extend the existing AssertConfigurationIsValid()
method to validate also the enum mappings.
To enable testing the enum mapping configuration:
public class MappingConfigurationsTests { [Fact] public void WhenProfilesAreConfigured_ItShouldNotThrowException() { // Arrange var config = new MapperConfiguration(configuration => { configuration.EnableEnumMappingValidation(); configuration.AddMaps(typeof(AssemblyInfo).GetTypeInfo().Assembly); }); // Assert config.AssertConfigurationIsValid(); } }
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4