AotObjectMapper.Abstractions
0.2.0
See the version list below for details.
dotnet add package AotObjectMapper.Abstractions --version 0.2.0
NuGet\Install-Package AotObjectMapper.Abstractions -Version 0.2.0
<PackageReference Include="AotObjectMapper.Abstractions" Version="0.2.0" />
<PackageVersion Include="AotObjectMapper.Abstractions" Version="0.2.0" />
<PackageReference Include="AotObjectMapper.Abstractions" />
paket add AotObjectMapper.Abstractions --version 0.2.0
#r "nuget: AotObjectMapper.Abstractions, 0.2.0"
#:package AotObjectMapper.Abstractions@0.2.0
#addin nuget:?package=AotObjectMapper.Abstractions&version=0.2.0
#tool nuget:?package=AotObjectMapper.Abstractions&version=0.2.0
AotObjectMapper
AotObjectMapper is a C# Roslyn source generator for compile-time object mapping.
This project was created primarily as a personal learning exercise and proof of concept. And may not be suitable for production use until v1.0.0
The main goals of this project are:
- Gaining hands-on experience with Roslyn incremental source generators
- Designing an AOT- and trimming-friendly alternative to reflection-based mappers
- Providing feature parity with mature mapping libraries such as AutoMapper or Mapster
- Exploring compile-time code generation, diagnostics, and analyzers
- Experimenting with API design and developer experience in attribute driven tooling
- Handling complex mapping scenarios such as recursion, reference preservation, enum strategies, and custom member mappings
<p align="center"> <img src="/docs/static/banner1280x640.png" alt="AotObjectMapper banner" height="256"> </p>
Installation
AotObjectMapper is distributed as a NuGet package.
Via .NET CLI
dotnet add package AotObjectMapper
Via Visual Studio
Right-click your project → Manage NuGet Packages
Search for AotObjectMapper
Install the latest version
Both methods will automatically add AotObjectMapper.Abstractions.
Quick Start
[GenerateMapper]
[Map<User, UserDto>]
public partial class UserMapper;
When the project is built, the mapper will generate a static Map method on UserMapper which will map Id, FirstName, MiddleName and LastName.
The remaining members cannot be mapped automatically because they differ in type and/or name, or do not exist on one of the classes. This can be fixed using mapper configuration which is all covered in the documentation.
Multiple Map attributes can be added to a single mapper class:
[GenerateMapper]
[Map<User, UserDto>, Map<UserDto, User>]
public partial class UserMapper;
For more information visit the Docs
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on AotObjectMapper.Abstractions:
| Package | Downloads |
|---|---|
|
AotObjectMapper.Mapper
DotNet source generator for mapping objects with no reflection. |
GitHub repositories
This package is not used by any popular GitHub repositories.