NeoMapper 1.0.7

dotnet add package NeoMapper --version 1.0.7
                    
NuGet\Install-Package NeoMapper -Version 1.0.7
                    
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="NeoMapper" Version="1.0.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="NeoMapper" Version="1.0.7" />
                    
Directory.Packages.props
<PackageReference Include="NeoMapper" />
                    
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 NeoMapper --version 1.0.7
                    
#r "nuget: NeoMapper, 1.0.7"
                    
#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.
#:package NeoMapper@1.0.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=NeoMapper&version=1.0.7
                    
Install as a Cake Addin
#tool nuget:?package=NeoMapper&version=1.0.7
                    
Install as a Cake Tool

NeoMapper 🪄

A small yet powerful generic mapper for .NET 8 written in C# with no external dependencies. Automatically maps entities ⇄ DTOs using extension methods, supporting attributes, type conversion, and collections.


📦 Installation

NeoMapper is available on NuGet:

dotnet add package NeoMapper

NuGet Badge:

NuGet Downloads


🚀 Features

  • Simple extension methods:
    • MapTo<TDest>() → creates a destination object from the source.
    • MapFrom(source) → fills an existing instance.
  • Customizable attributes:
    • [MapIgnore] → ignores properties.
    • [MapName("OtherProperty")] → alias for different property names.
  • Built-in type conversion:
    • Nullables (int?, DateTime?, etc.).
    • Enums ↔ string/numbers.
    • Guid, DateTime, decimal, TimeSpan, etc.
  • Collections: converts IEnumerable<T> to List<TDestination>.
  • Recursive mapping: complex objects are mapped property by property.
  • Custom converters: register your own conversion functions between types.

🧑‍💻 Quick usage

using GenericMapper;

var user = new User
{
    Id = 7,
    FullName = "Ada Lovelace",
    CreatedAt = DateTime.UtcNow,
    Address = new Address { Street = "St. James's", City = "London" },
    Roles = new List<Role> { Role.Admin, Role.User }
};

// Entity → DTO
var dto = user.MapTo<UserDto>();

// DTO → Entity
var user2 = dto.MapTo<User>();

// Map onto existing instance
user2.MapFrom(new UserDto { Id = 7, Name = "Ada Byron" });

🛠️ Attribute example

public sealed class UserDto
{
    public int Id { get; set; }
    [MapName("FullName")] // Map FullName from entity to Name in DTO
    public string Name { get; set; } = string.Empty;
    public string CreatedAt { get; set; } = string.Empty;
    public AddressDto? Address { get; set; }
    public List<string> Roles { get; set; } = new();
}

🔧 Custom converters

MappingExtensions.RegisterConverter<Role, string>(r => r.ToString());
MappingExtensions.RegisterConverter<string, Role>(s => Enum.Parse<Role>(s, true));

  • src/NeoMapper/ObjectMapper.cs → main NeoMapper code.
  • DTOs and Entities in their respective layers.

📜 License

MIT – You can use and adapt it freely.


✨ Contributions

Ideas and improvements are welcome! You can add:

  • Support for fluent configuration expressions.
  • Advanced date/time format handling.
  • Direct serialization from JSON.

NeoMapper: Transform your objects as if by magic. 🪄

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

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.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.7 109 1/8/2026
1.0.6 100 1/8/2026
1.0.5 100 1/7/2026
1.0.4 385 1/6/2026
1.0.3 315 10/17/2025
1.0.2 185 10/15/2025
1.0.1 190 10/8/2025
1.0.0 189 10/8/2025