# luckypennysoftware/automapper

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/luckypennysoftware-automapper).**

10,190 stars · 2,409 forks · C# · NOASSERTION

## Links

- GitHub: https://github.com/LuckyPennySoftware/AutoMapper
- Homepage: https://automapper.io
- awesome-repositories: https://awesome-repositories.com/repository/luckypennysoftware-automapper.md

## Description

AutoMapper is a strongly typed object-to-object mapper for .NET. It provides utilities for copying data between different object representations using convention-based property matching to eliminate manual assignment code.

The library automates the transformation of data models by matching source and destination properties based on shared names and types. It supports the conversion of internal domain models into data transfer objects, facilitating data movement between presentation, business, and data access layers.

The system employs reflection-based type discovery and recursive object graph traversal to process nested hierarchies. It includes capabilities for flattening nested source properties into single destination properties and utilizes cached mapping plans to store pre-computed transformation logic.

## Tags

### Programming Languages & Runtimes

- [.NET Object Mapping](https://awesome-repositories.com/f/programming-languages-runtimes/net-object-mapping.md) — Provides a specialized library for transferring data between object types within the .NET ecosystem.
- [Automated Assignments](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/language-features/object-property-descriptors/property-shorthands/automated-assignments.md) — Reduces boilerplate code by automatically matching and assigning properties with similar names between class instances.

### Data & Databases

- [Object-to-Object Mappers](https://awesome-repositories.com/f/data-databases/sql-query-interfaces/object-to-object-mappers.md) — Maps data between two different memory-resident object types rather than between a database and an object.
- [Type Conversion Registries](https://awesome-repositories.com/f/data-databases/data-type-mappings/type-conversion-utilities/type-conversion-registries.md) — Provides a pipeline of automatic casting and conversion steps to resolve type mismatches between source and destination.

### Software Engineering & Architecture

- [Data Transfer Object Mapping](https://awesome-repositories.com/f/software-engineering-architecture/data-transfer-object-mapping.md) — Automates the mapping of domain entities to data transfer objects to decouple application layers. ([source](https://github.com/luckypennysoftware/automapper#readme))
- [Convention-Based Data Mapping](https://awesome-repositories.com/f/software-engineering-architecture/naming-conventions/convention-based-data-mapping.md) — Uses naming standards to automatically determine how data is mapped between classes.
- [Reflection-Based Unmarshallers](https://awesome-repositories.com/f/software-engineering-architecture/reflection-based-unmarshallers.md) — Analyzes object structures at runtime using language reflection to identify compatible properties.
- [Graph Traversal](https://awesome-repositories.com/f/software-engineering-architecture/entity-management/graph-traversal.md) — Recursively traverses complex object hierarchies to initiate child mappings for nested types.
- [Mapping Caches](https://awesome-repositories.com/f/software-engineering-architecture/mapping-caches.md) — Implements memory-based caching of pre-computed transformation logic to optimize repeated mapping operations.
- [Member Projections](https://awesome-repositories.com/f/software-engineering-architecture/module-encapsulation-patterns/naming-based-encapsulation/internal-member-encapsulation/member-projections.md) — Provides capabilities to flatten nested source properties into single destination properties via name concatenation.
- [Layered Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/layered-architectures.md) — Facilitates data movement between presentation, business, and data access layers to maintain separation of concerns.
