StoneKit.TransverseMapper
2024.1.1.391401
dotnet add package StoneKit.TransverseMapper --version 2024.1.1.391401
NuGet\Install-Package StoneKit.TransverseMapper -Version 2024.1.1.391401
<PackageReference Include="StoneKit.TransverseMapper" Version="2024.1.1.391401" />
paket add StoneKit.TransverseMapper --version 2024.1.1.391401
#r "nuget: StoneKit.TransverseMapper, 2024.1.1.391401"
// Install StoneKit.TransverseMapper as a Cake Addin #addin nuget:?package=StoneKit.TransverseMapper&version=2024.1.1.391401 // Install StoneKit.TransverseMapper as a Cake Tool #tool nuget:?package=StoneKit.TransverseMapper&version=2024.1.1.391401
Transverse - a quick object mapper for .Net
I'll publish the source code very soon on github.
A tiny and quick object mapper for .Net v8.0+ Inspired by AutoMapper and TinyMapper, I'm trying to create a library named StoneKit which is based on dotnet core 8 features. Transverse is a part of that library and I'm aimed to make it the tiniest and fastest mapping library in dotnet.
Performance Comparison
Right now it performs faster than AutoMapper and I'm trying to improve it constantly. There is a benchmark project in the source code that I'm developing to showcase the performance.
Method | Mean | Error | StdDev | Median |
---|---|---|---|---|
CollectionMapping_AutoMapper | 2.061 �s | 0.0405 �s | 0.0433 �s | 2.055 �s |
CollectionMapping_Transverse | 1.802 �s | 0.0649 �s | 0.1872 �s | 1.722 �s |
CollectionMapping_Handwritten | 1.474 �s | 0.0379 �s | 0.1075 �s | 1.459 �s |
Installation
Available on nuget
PM> Install-Package StoneKit.TransverseMapper
Getting Started
Transverse.Bind<Person, PersonDto>();
var person = new Person
{
Id = Guid.NewGuid(),
FirstName = "John",
LastName = "Doe"
};
var personDto = Transverse.Map<PersonDto>(person);
Ignore mapping source members and bind members with different names/types
Transverse.Bind<Person, PersonDto>(config =>
{
config.Ignore(x => x.Id);
config.Ignore(x => x.Email);
config.Bind(source => source.LastName, target => target.Surname);
config.Bind(target => source.Emails, typeof(List<string>));
});
var person = new Person
{
Id = Guid.NewGuid(),
FirstName = "John",
LastName = "Doe",
Emails = new List<string>{"support@tinymapper.net", "MyEmail@tinymapper.net"}
};
var personDto = Transverse.Map<PersonDto>(person);
Transverse
only supports dotnet core 8.0
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. |
-
net8.0
- StoneKit.Core.Common (>= 2024.1.1.305385)
- StoneKit.Core.Reflection (>= 2024.1.1.305385)
- StoneKit.Core.Structs.Maybe (>= 2024.1.1.305385)
- StoneKit.Core.Structs.TypePair (>= 2024.1.1.305385)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on StoneKit.TransverseMapper:
Package | Downloads |
---|---|
StoneKit.Infrastructure
StoneKit Infrastructure is a comprehensive boilerplate for starting new ASP.NET Core 8 API projects. It integrates essential libraries and services, including FluentValidation, Serilog logging, hashing, HttpClient, OpenAPI documentation, and more, to streamline the setup and development process. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2024.1.1.391401 | 86 | 10/5/2024 |
2024.1.1.305385 | 94 | 8/5/2024 |
2024.1.1.268769 | 101 | 7/9/2024 |
2024.1.1.261673 | 113 | 7/4/2024 |
2024.1.1.261665 | 102 | 7/4/2024 |
2024.1.1.261630 | 109 | 7/4/2024 |
2024.1.1.260673 | 103 | 7/3/2024 |
2024.1.1.260489 | 98 | 7/3/2024 |
2024.1.1.260485 | 100 | 7/3/2024 |
1.24.703.180757 | 242 | 7/3/2024 |
1.24.703.164608 | 480 | 7/3/2024 |
1.24.703.121212 | 359 | 7/3/2024 |
1.24.626.192712 | 109 | 6/26/2024 |
1.24.612.909 | 91 | 6/11/2024 |
1.24.611.233128 | 101 | 6/11/2024 |
1.24.611.232806 | 92 | 6/11/2024 |
1.24.603.121931 | 95 | 6/3/2024 |
1.24.317.170732 | 539 | 3/17/2024 |
1.24.317.170549 | 82 | 3/17/2024 |
1.24.317.164653 | 121 | 3/17/2024 |
1.24.317.161400 | 115 | 3/17/2024 |
1.24.121.184218 | 102 | 1/21/2024 |
1.24.121.182730 | 101 | 1/21/2024 |
1.23.1205.143421 | 183 | 12/5/2023 |
1.23.1205.132045 | 125 | 12/5/2023 |
1.23.1205.121846 | 101 | 12/5/2023 |
1.23.1205.121045 | 154 | 12/5/2023 |
1.23.1204.161652 | 113 | 12/4/2023 |
1.23.1204.155355 | 245 | 12/4/2023 |