DexCode.Mapper
1.0.0
dotnet add package DexCode.Mapper --version 1.0.0
NuGet\Install-Package DexCode.Mapper -Version 1.0.0
<PackageReference Include="DexCode.Mapper" Version="1.0.0" />
<PackageVersion Include="DexCode.Mapper" Version="1.0.0" />
<PackageReference Include="DexCode.Mapper" />
paket add DexCode.Mapper --version 1.0.0
#r "nuget: DexCode.Mapper, 1.0.0"
#:package DexCode.Mapper@1.0.0
#addin nuget:?package=DexCode.Mapper&version=1.0.0
#tool nuget:?package=DexCode.Mapper&version=1.0.0
DexCode.Mapper
Mapeador objeto-objeto leve para .NET, com a mesma superfície de API do AutoMapper
(Profile, CreateMap, ReverseMap, IMapper.Map) — pensado como substituto direto
para quem já usa AutoMapper e não quer (ou não pode, por licenciamento) continuar usando.
Baseado em expression trees compiladas: cada mapeamento é compilado uma única vez
(no CreateMapper()) e reutilizado como um delegate rápido, sem reflexão a cada chamada.
Instalação
dotnet add package DexCode.Mapper
Uso
Igual ao AutoMapper — só troca o using:
using DexCode.Mapper;
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<Pessoa, PessoaResponse>().ReverseMap();
}
}
var config = new MapperConfiguration(cfg => cfg.AddProfile(new MappingProfile()));
IMapper mapper = config.CreateMapper();
var response = mapper.Map<PessoaResponse>(pessoa);
var lista = mapper.Map<List<PessoaResponse>>(listaDePessoas);
Registro via injeção de dependência
// Escaneia o assembly por classes que herdam de Profile e registra o IMapper como singleton
builder.Services.AddDexCodeMapper(typeof(MappingProfile).Assembly);
Convenção de mapeamento
As propriedades são copiadas por nome (case-insensitive) e tipo compatível:
- Mesmo tipo ou tipo atribuível (herança/interface): copiado direto.
- Tipos numéricos entre si (
int↔long↔decimaletc.): conversão automática. Nullable<T>↔T: suportado.- Enums do mesmo nome subjacente: suportado.
- Propriedade sem correspondência no destino ou tipos incompatíveis: ignorada silenciosamente (não lança erro — mesmo comportamento padrão do AutoMapper).
Se você chamar Map<TDestination>(source) para um par de tipos sem CreateMap
correspondente em nenhum Profile registrado, é lançada uma InvalidOperationException
com uma mensagem indicando exatamente qual CreateMap<TSource, TDestination>() falta.
O que NÃO está implementado (ainda)
Este pacote cobre mapeamento 1:1 por convenção — o suficiente para a grande maioria dos casos de uso reais. Os seguintes recursos do AutoMapper não existem aqui:
ForMember(...)(regras de mapeamento customizadas por propriedade)- Mapeamento condicional /
Condition(...) ProjectTo<T>()paraIQueryable(projeção no banco de dados)- Value converters / type converters customizados
- Validação de configuração (
AssertConfigurationIsValid)
Se você precisar de algum desses recursos, abra uma issue ou contribua — é um pacote pequeno e a intenção é crescer conforme a necessidade real de uso.
Licença
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
-
net8.0
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 111 | 8/8/2026 |