RMapper 1.0.3
dotnet add package RMapper --version 1.0.3
NuGet\Install-Package RMapper -Version 1.0.3
<PackageReference Include="RMapper" Version="1.0.3" />
<PackageVersion Include="RMapper" Version="1.0.3" />
<PackageReference Include="RMapper" />
paket add RMapper --version 1.0.3
#r "nuget: RMapper, 1.0.3"
#:package RMapper@1.0.3
#addin nuget:?package=RMapper&version=1.0.3
#tool nuget:?package=RMapper&version=1.0.3
RMapper 🚀
RMapper es un micro mapeador de objetos para .NET: ligero, sin dependencias externas y fácil de extender.
Resuelve el problema de copiar datos entre objetos (p. ej., DTOs ⇄ Entidades) sin repetir código ni añadir librerías pesadas.
✨ Características
- Mapeo automático por nombre y tipo de propiedad.
- Ignora propiedades decoradas con
[IgnoreMap]. - API mínima:
IMapperySimpleMapper. - Cero dependencias externas.
- Compilado para .NET Standard 2.0 (compatible con .NET Framework 4.6.1+, .NET Core 2.0+) y .NET 8.0.
🧰 Requisitos
- Cualquier proyecto en .NET Framework 4.6.1+, .NET Core 2.0+, .NET 5/6/7/8+.
- No requiere configuración adicional.
📦 Instalación
.NET CLI
dotnet add package RMapper
Package Manager (Visual Studio)
Install-Package RMapper
PackageReference
<ItemGroup>
<PackageReference Include="RMapper" Version="1.*" />
</ItemGroup>
🚀 Uso básico
using RMapper.Core.Attributes;
using RMapper.Core.Interfaces;
using RMapper.Reflection;
public class UserDto
{
public string Nombre { get; set; }
[IgnoreMap] // 👈 No se mapeará
public int Edad { get; set; }
}
public class Usuario
{
public string Nombre { get; set; }
public int Edad { get; set; }
}
class Program
{
static void Main()
{
var dto = new UserDto { Nombre = "Carlos", Edad = 30 };
IMapper mapper = new SimpleMapper();
var usuario = mapper.Map<UserDto, Usuario>(dto);
Console.WriteLine(usuario.Nombre); // Carlos
Console.WriteLine(usuario.Edad); // 0 (ignorado por [IgnoreMap])
}
}
¿Qué hace [IgnoreMap]?
Cualquier propiedad marcada con IgnoreMap será omitida durante el mapeo.
Ejemplo:
public class ProductoDto
{
public string Nombre { get; set; }
[IgnoreMap]
public decimal Precio { get; set; }
}
En el objeto destino,
Precioqueda con su valor por defecto (p. ej.0m).
🔍 ¿Cómo funciona?
RMapper usa Reflection para:
- Leer las propiedades públicas de origen y destino.
- Comparar por nombre y tipo.
- Ignorar las que tengan
[IgnoreMap]. - Copiar valores en el objeto destino.
🧪 Prueba rápida local
dotnet new console -n RMapper.Demo
cd RMapper.Demo
dotnet add package RMapper
// Abre Program.cs y pega el ejemplo de "Uso básico"
dotnet run
🧩 Compatibilidad
| Plataforma | Estado |
|---|---|
| .NET Framework 4.6.1+ | ✅ |
| .NET Core 2.0+ | ✅ |
| .NET 5/6/7/8+ | ✅ |
| Xamarin / MAUI / Unity* | ✅/⚠️ |
El paquete incluye
netstandard2.0ynet8.0. En entornos antiguos usa el TFM netstandard2.0.
📚 Documentación y enlaces
🛣️ Roadmap
- Mapping Profiles (configuraciones por tipo).
ForMember(...)para mapeos personalizados.- Expression Trees para mayor rendimiento.
- Conversiones simples (
int⇄string, enums, fechas). - Test suite y benchmarks.
💬 Feedback & Soporte
- Contacto (placeholder): @RafaDev19 · rafael09.develop@gmail.com
⚖️ Licencia
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
| 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 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. |
| .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.
-
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.