Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion GitVersion.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
next-version: 1.0.0
next-version: 1.2.0
tag-prefix: '[vV]'
mode: ContinuousDeployment
branches:
Expand Down
51 changes: 46 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# <img src="https://github.com/CodeShayk/TurboMapper/blob/master/Images/ninja-icon-16.png" alt="ninja" style="width:30px;"/> TurboMapper v1.0.0
# <img src="https://github.com/CodeShayk/TurboMapper/blob/master/Images/ninja-icon-16.png" alt="ninja" style="width:30px;"/> TurboMapper v1.2.0
[![NuGet version](https://badge.fury.io/nu/TurboMapper.svg)](https://badge.fury.io/nu/TurboMapper) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/CodeShayk/TurboMapper/blob/master/LICENSE.md)
[![GitHub Release](https://img.shields.io/github/v/release/CodeShayk/TurboMapper?logo=github&sort=semver)](https://github.com/CodeShayk/TurboMapper/releases/latest)
[![master-build](https://github.com/CodeShayk/TurboMapper/actions/workflows/Master-Build.yml/badge.svg)](https://github.com/CodeShayk/TurboMapper/actions/workflows/Master-Build.yml)
Expand All @@ -10,24 +10,65 @@
## Introduction
### What is TurboMapper?
`TurboMapper` is a lightweight, high-performance object mapper for .NET that provides both shallow and deep mapping capabilities. It serves as a free alternative to AutoMapper with a simple, intuitive API.
## Getting Started?

## Getting Started
### i. Installation
Install the latest version of TurboMapper nuget package with command below.

```
NuGet\Install-Package TurboMapper
```
### ii. Developer Guide

### ii. Quick Start Example
```csharp
using TurboMapper;
using Microsoft.Extensions.DependencyInjection;

// Setup
var services = new ServiceCollection();
services.AddTurboMapper();
var serviceProvider = services.BuildServiceProvider();
var mapper = serviceProvider.GetService<IMapper>();

// Define models
public class Source
{
public string Name { get; set; }
public int Age { get; set; }
}

public class Target
{
public string Name { get; set; }
public int Age { get; set; }
}

// Map single object
var source = new Source { Name = "John Doe", Age = 30 };
var target = mapper.Map<Source, Target>(source);

// Map collections
var sources = new List<Source>
{
new Source { Name = "Alice", Age = 25 },
new Source { Name = "Bob", Age = 32 }
};

// Map to IEnumerable<T>
IEnumerable<Target> targets = mapper.Map<Source, Target>(sources);
```

### iii. Developer Guide
This comprehensive guide provides detailed information on TurboMapper, covering everything from basic concepts to advanced implementations and troubleshooting guidelines.

Please click on [Developer Guide](https://github.com/CodeShayk/TurboMapper/wiki) for complete details.

## Release Roadmap
This section provides the summary of planned releases with key details about each release.
This section provides the summary of planned releases with key details about each release.

| Release Version | Release Date | Key Features | Backward Compatibility | Primary Focus |
|----------------|--------------|--------------|----------------------|---------------|
| 1.2.0 | October 2025 | Performance improvements (2x+ speed), collection mapping, custom type converters, conditional mapping, transformation functions, configuration validation, improved error messages | ✅ Fully backward compatible | Core improvements, mapping features, custom conversions |
| 1.2.0 | October 2025 | Performance improvements (2x+ speed), enhanced collection mapping API, custom type converters, conditional mapping, transformation functions, configuration validation, improved error messages | ✅ Fully backward compatible | Core improvements, mapping features, custom conversions |
| 1.4.0 | Jan 2026 | Complex nested mapping, circular reference handling, performance diagnostics, generic collection interfaces, interface-to-concrete mapping, dictionary mapping, .NET Standard compatibility | ✅ Fully backward compatible | Advanced mapping, type features, enhanced conversions |
| 2.1.0 | Mid 2026 | Pre-compiled mappings, reverse mapping, async transformations, async collection processing, LINQ expressions, projection support, detailed tracing | ❌ Contains breaking changes (new async methods in IMapper) | Next-gen features, async operations, data access integration |

Expand Down
6 changes: 6 additions & 0 deletions src/TurboMapper/IMapper.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
using System.Collections.Generic;

namespace TurboMapper
{
public interface IMapper

Check warning on line 5 in src/TurboMapper/IMapper.cs

View workflow job for this annotation

GitHub Actions / Build-Test

Missing XML comment for publicly visible type or member 'IMapper'
{
TTarget Map<TSource, TTarget>(TSource source);

Check warning on line 7 in src/TurboMapper/IMapper.cs

View workflow job for this annotation

GitHub Actions / Build-Test

Missing XML comment for publicly visible type or member 'IMapper.Map<TSource, TTarget>(TSource)'

IEnumerable<TDestination> Map<TSource, TDestination>(IEnumerable<TSource> source);

Check warning on line 9 in src/TurboMapper/IMapper.cs

View workflow job for this annotation

GitHub Actions / Build-Test

Missing XML comment for publicly visible type or member 'IMapper.Map<TSource, TDestination>(IEnumerable<TSource>)'

ValidationResult ValidateMapping<TSource, TTarget>();

Check warning on line 11 in src/TurboMapper/IMapper.cs

View workflow job for this annotation

GitHub Actions / Build-Test

Missing XML comment for publicly visible type or member 'IMapper.ValidateMapping<TSource, TTarget>()'
}
}
6 changes: 6 additions & 0 deletions src/TurboMapper/IMappingExpression.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,14 @@

namespace TurboMapper
{
public interface IMappingExpression<TSource, TTarget>

Check warning on line 6 in src/TurboMapper/IMappingExpression.cs

View workflow job for this annotation

GitHub Actions / Build-Test

Missing XML comment for publicly visible type or member 'IMappingExpression<TSource, TTarget>'
{
IMappingExpression<TSource, TTarget> ForMember<TValue>(Expression<Func<TTarget, TValue>> targetMember, Expression<Func<TSource, TValue>> sourceMember);

Check warning on line 8 in src/TurboMapper/IMappingExpression.cs

View workflow job for this annotation

GitHub Actions / Build-Test

Missing XML comment for publicly visible type or member 'IMappingExpression<TSource, TTarget>.ForMember<TValue>(Expression<Func<TTarget, TValue>>, Expression<Func<TSource, TValue>>)'

IMappingExpression<TSource, TTarget> Ignore<TValue>(Expression<Func<TTarget, TValue>> targetMember);

Check warning on line 10 in src/TurboMapper/IMappingExpression.cs

View workflow job for this annotation

GitHub Actions / Build-Test

Missing XML comment for publicly visible type or member 'IMappingExpression<TSource, TTarget>.Ignore<TValue>(Expression<Func<TTarget, TValue>>)'

IMappingExpression<TSource, TTarget> When<TValue>(Expression<Func<TTarget, TValue>> targetMember, Func<TSource, bool> condition);

Check warning on line 12 in src/TurboMapper/IMappingExpression.cs

View workflow job for this annotation

GitHub Actions / Build-Test

Missing XML comment for publicly visible type or member 'IMappingExpression<TSource, TTarget>.When<TValue>(Expression<Func<TTarget, TValue>>, Func<TSource, bool>)'

IMappingExpression<TSource, TTarget> MapWith<TSourceValue, TTargetValue>(Expression<Func<TTarget, TTargetValue>> targetMember, Func<TSourceValue, TTargetValue> transformFunction);

Check warning on line 14 in src/TurboMapper/IMappingExpression.cs

View workflow job for this annotation

GitHub Actions / Build-Test

Missing XML comment for publicly visible type or member 'IMappingExpression<TSource, TTarget>.MapWith<TSourceValue, TTargetValue>(Expression<Func<TTarget, TTargetValue>>, Func<TSourceValue, TTargetValue>)'
}
}
3 changes: 3 additions & 0 deletions src/TurboMapper/IObjectMap.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;

namespace TurboMapper
Expand All @@ -7,5 +8,7 @@ internal interface IObjectMap
void CreateMap<TSource, TTarget>(List<PropertyMapping> mappings = null);

void CreateMap<TSource, TTarget>(List<PropertyMapping> mappings, bool enableDefaultMapping);

void RegisterConverter<TSource, TDestination>(Func<TSource, TDestination> converter);
}
}
Loading
Loading