6a5c265047
* Updated to Automapper 13.0 Changed CI/CD pipeline to net8.0 for tests Changed target framework of library to net6.0 Updated other nuget packages to latest stable version Updated documentation * Removed explicit .net version from ci/cd pipelines --------- Co-authored-by: Henk Kin <HenkK@4dotnet.nl> |
||
---|---|---|
.github | ||
src | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
AutoMapper.Extensions.EnumMapping.sln | ||
AutoMapper.snk | ||
Build.ps1 | ||
Directory.Build.props | ||
ISSUE_TEMPLATE.md | ||
LICENSE | ||
Push.ps1 | ||
README.md | ||
icon.png | ||
nuget.config |
README.md
AutoMapper.Extensions.EnumMapping
Summary
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.
Dependencies
- AutoMapper (from version 10.0)
Installing AutoMapper.Extensions.EnumMapping
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.
Usage
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, but it is possible to map by name calling MapByName()
or MapByValue()
.
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
}
}
...
Testing
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();
}
}