Flavio.Santos.NetCore.ObjectMapping 1.0.5

dotnet add package Flavio.Santos.NetCore.ObjectMapping --version 1.0.5
                    
NuGet\Install-Package Flavio.Santos.NetCore.ObjectMapping -Version 1.0.5
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Flavio.Santos.NetCore.ObjectMapping" Version="1.0.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Flavio.Santos.NetCore.ObjectMapping" Version="1.0.5" />
                    
Directory.Packages.props
<PackageReference Include="Flavio.Santos.NetCore.ObjectMapping" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Flavio.Santos.NetCore.ObjectMapping --version 1.0.5
                    
#r "nuget: Flavio.Santos.NetCore.ObjectMapping, 1.0.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=Flavio.Santos.NetCore.ObjectMapping&version=1.0.5
                    
Install Flavio.Santos.NetCore.ObjectMapping as a Cake Addin
#tool nuget:?package=Flavio.Santos.NetCore.ObjectMapping&version=1.0.5
                    
Install Flavio.Santos.NetCore.ObjectMapping as a Cake Tool

FDS.NetCore.ObjectMapping

A lightweight, fluent object mapping library for .NET with automatic property transfer and functional transformation support.

โœจ Features

  • ๐Ÿ” Automatic property mapping by name and compatible type
  • ๐Ÿ”„ Enum โ†” String conversion support
  • ๐Ÿงพ List mapping with .MapToList<TSource, TTarget>()
  • โšก๏ธ Uses compiled expressions for high performance (no reflection at runtime)
  • ๐Ÿงฉ Fluent .Apply() to customize transformations inline
  • ๐Ÿงช No setup, no DI, no registration required
  • ๐Ÿชถ Zero external dependencies

๐Ÿ’ก When to Use

Use FDS.NetCore.ObjectMapping when you want:

  • Fast, explicit, and simple mapping (especially for small or medium apps)
  • Clean code with inline overrides using .Apply()
  • Automatic mapping between enums and strings
  • Avoiding the overhead of AutoMapper-style configuration

๐Ÿš€ Installation

dotnet add package Flavio.Santos.NetCore.ObjectMapping

โœ… Usage

1. Add using

using FDS.NetCore.ObjectMapping.Extensions;

2. Map automatically by property name

var dto = entity.MapTo<ReadTransactionDto>();

3. Add extra behavior with .Apply()

var transaction = dto
    .MapTo<Transaction>()
    .Apply(t => t.Id = Guid.NewGuid())
    .Apply(t => t.CreatedAt = DateTime.Now);

๐Ÿ”„ Enum Support

Supports string โ†’ enum and enum โ†’ string automatically.

Example:

Domain
public enum TransactionType { Credit, Debit }

public class Transaction
{
    public TransactionType Type { get; set; }
}
DTO
public class ReadTransactionDto
{
    public string Type { get; set; } = string.Empty;
}

Mapping:

var dto = transaction.MapTo<ReadTransactionDto>(); // Type will be "Credit"

๐Ÿ“š Collection Mapping

You can map lists or any IEnumerable<T>:

var dtoList = transactions.MapToList<Transaction, ReadTransactionDto>();

Perfect for mapping repository results into DTOs for API return.


๐Ÿงช Example: Create + Return

var transaction = dto
    .MapTo<Transaction>()
    .Apply(t => t.Id = Guid.NewGuid())
    .Apply(t => t.CreatedAt = DateTime.Now);

await _repository.AddAsync(transaction);

var response = transaction.MapTo<ReadTransactionDto>();
return Result.CreateAdd(response);

โš™๏ธ How it Works Internally

  • Uses compiled expressions to generate fast property setters and getters at runtime
  • Enum-string conversion handled with type-safe reflection
  • Caches mapping logic in memory per (source, target) combination
  • Fluent API remains simple and chainable

๐Ÿ“ฆ Package Details

Property Value
Package ID Flavio.Santos.NetCore.ObjectMapping
Target Framework .NET 8
License MIT
Author Flavio dos Santos
Tags object mapping, dto, transformation, fluent api
Contact LinkedIn

โœ… Advantages

  • ๐Ÿ“‰ Minimal overhead compared to reflection or AutoMapper
  • ๐Ÿ’ก No registration or profiles required
  • ๐Ÿ” Supports collections and enum/string mapping
  • ๐Ÿ” Type-safe conversion with expression-based copying
  • ๐ŸŽฏ Focused on clarity and performance for small/medium solutions

๐Ÿ“„ License

Licensed under the MIT License.

Product 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

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.5 127 6/17/2025
1.0.4 125 6/17/2025
1.0.3 159 6/14/2025
1.0.2 159 6/13/2025
1.0.1 181 6/13/2025
1.0.0 184 6/13/2025