StarFuryDev.ObjectMapper
1.0.1
dotnet add package StarFuryDev.ObjectMapper --version 1.0.1
NuGet\Install-Package StarFuryDev.ObjectMapper -Version 1.0.1
<PackageReference Include="StarFuryDev.ObjectMapper" Version="1.0.1" />
<PackageVersion Include="StarFuryDev.ObjectMapper" Version="1.0.1" />
<PackageReference Include="StarFuryDev.ObjectMapper" />
paket add StarFuryDev.ObjectMapper --version 1.0.1
#r "nuget: StarFuryDev.ObjectMapper, 1.0.1"
#:package StarFuryDev.ObjectMapper@1.0.1
#addin nuget:?package=StarFuryDev.ObjectMapper&version=1.0.1
#tool nuget:?package=StarFuryDev.ObjectMapper&version=1.0.1
StarFuryDev.ObjectMapper
A simple and lightweighta attribute based object mapping library for .NET, built as a hobby project to make object-to-object mapping easier.
Why This Library?
I created this library as a personal learning project and wanted to share it with the community. While there are other great mapping libraries out there, I built this to:
- Learn more about reflection and attributes in C#
- Explore different approaches to object mapping
- Share something useful with the .NET community
Feel free to use it or just peek at the code!
Installation
Install via NuGet Package Manager:
dotnet add package StarFuryDev.ObjectMapper
Or via Package Manager Console:
Install-Package StarFuryDev.ObjectMapper
Quick Start
using StarFuryDev.ObjectMapper;
// Source data
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
// Destination
[MapFrom(nameof(Person))]
public class Profile
{
// default mapping - source property name = destination property name
public string FirstName { get; set; }
// Map from using a custom converter
[MapFromUsing(typeof(CustomConverters), nameof(CustomConverters.ConvertToFullName))]
public string FullName { get; set; }
// Map from using a different property
[MapFrom(nameof(Source.Age))]
public int MyAge { get; set; }
// Ignore when mapping
[MapIgnore]
prop string Address { get; set; }
}
public static class CustomConverters
{
public static string ConvertToFullName(string firstName, string lastName)
{
return $"{firstName} {lastname}";
}
}
// Simple mapping
var person = new Person { FirstName = "John", LastName = "Smith" Age = 30 };
var profile = Mapper.Map<Person, Profile>(person);
Features
- ✨ Simple, Attribute based mapping
- 🔧 Property name matching (case-sensitive)
- 📦 Lightweight with no dependencies
- 🎯 Convention-based (default name to name) mapping
- 🔄 List<> and Dictionary<,> mapping support
- ⚙️ Custom mapping converter support
- 🎯 Null source properties ignored as default
Limitations
Since this is a hobby project, there are some limitations:
- Not as feature-rich as AutoMapper or Mapster
Contributing
This is a hobby project, but contributions are welcome! If you find a bug or have an idea:
- Open an issue to discuss it
- Create a feature branch
- Submit a pull request
No contribution is too small - typo fixes, documentation improvements, and feature suggestions are all appreciated!
Building from Source
# Clone the repository
git clone https://github.com/starfury-dev/ObjectMapper.git
# Restore dependencies
dotnet restore
# Build
dotnet build
# Run tests
dotnet test
Acknowledgments
- Inspired by other great mapping libraries in the .NET ecosystem
- Thanks to the .NET community for feedback and support
- Built with ❤️ as a learning project
Contact
- GitHub: @starfury-dev
- Issues: GitHub Issues
⭐ If you find this project useful, consider giving it a star on GitHub!
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 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. |
-
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.