TL.DataMapping
0.4.0
See the version list below for details.
dotnet add package TL.DataMapping --version 0.4.0
NuGet\Install-Package TL.DataMapping -Version 0.4.0
<PackageReference Include="TL.DataMapping" Version="0.4.0" />
<PackageVersion Include="TL.DataMapping" Version="0.4.0" />
<PackageReference Include="TL.DataMapping" />
paket add TL.DataMapping --version 0.4.0
#r "nuget: TL.DataMapping, 0.4.0"
#:package TL.DataMapping@0.4.0
#addin nuget:?package=TL.DataMapping&version=0.4.0
#tool nuget:?package=TL.DataMapping&version=0.4.0
🔄 TL.DataMapping
High-speed object mapper for .NET based on compiled Expression Trees: Result pattern integration, nested collections, and custom type converters.
Mapeador de objetos ultrarrápido para .NET baseado em Expression Trees compiladas: integração com Result pattern, coleções aninhadas e conversores customizados de tipo.
O TL.DataMapping é um mapeador de objetos de alto desempenho projetado para eliminar o overhead de reflexão em tempo de execução. Ao compilar árvores de expressão (Expression Trees) diretamente em delegates nativos cacheados em memória, ele entrega velocidade comparável a código manual com uma API limpa e idiomática.
📦 Instalação
Adicione o pacote ao seu projeto através do .NET CLI:
dotnet add package TL.DataMapping
🚀 Funcionalidades Principais
| Categoria | Componentes & Métodos | Descrição |
|---|---|---|
| Mapeamento Compilado | SimpleMapper, Map<TSource, TDestination>() |
Compilação dinâmica de delegates lambda com Bounded LRU Cache thread-safe (limite padrão de 2.048 entradas para proteção de memória). |
| Result Pattern Funcional | TryMap<TSource, TDestination>() |
Mapeamento monádico que retorna Result<TDestination>, eliminando o lançamento de exceções para fluxos de validação. |
| Coleções Aninhadas | MapCollection<TSource, TDestination>() |
Suporte transparente a listas, enumeráveis e grafos de objetos aninhados. |
| Conversores Customizados | ITypeConverter<TSource, TDestination> |
Extensibilidade para definir transformações customizadas entre tipos incompatíveis. |
| Injeção de Dependência | AddSimpleMapper() |
Registro como serviço Singleton/Scoped facilitando o consumo em microsserviços. |
💡 Exemplos de Uso
1. Injeção de Dependência no Program.cs
using Microsoft.Extensions.DependencyInjection;
builder.Services.AddSimpleMapper();
2. Mapeamento Seguro com Result Pattern
using DataMapping.Helpers;
using DataMapping.Helpers.Interfaces;
public class ClienteService
{
private readonly IMapper _mapper;
public ClienteService(IMapper mapper)
{
_mapper = mapper;
}
public void Processar(Cliente cliente)
{
// Mapeamento direto
ClienteDto dto = _mapper.Map<Cliente, ClienteDto>(cliente);
// Mapeamento seguro com Result Pattern
var result = _mapper.TryMap<Cliente, ClienteDto>(cliente);
if (result.IsSuccess)
{
Console.WriteLine($"Sucesso: {result.Value.Nome}");
}
}
}
public class Cliente
{
public int Id { get; set; }
public string Nome { get; set; } = string.Empty;
}
public class ClienteDto
{
public int Id { get; set; }
public string Nome { get; set; } = string.Empty;
}
🏛️ Decisões Arquiteturais e Segurança
Para detalhes sobre benchmarking, delegates dinâmicos e políticas de zero boxing:
📄 Licença
Distribuído sob a 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 is compatible. 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 was computed. 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. |
-
net8.0
-
net9.0
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.