AutoMapper pour C# (.NET) : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à AutoMapper pour C# (.NET)

\n\n

Dans le développement moderne en C# (.NET), il est souvent nécessaire de convertir un objet en un autre. Cela peut être nécessaire lors du transfert de données entre les couches d'une application (par exemple, de la base de données vers un DTO pour une API), lors du mappage d'une ViewModel vers une Entity, ou lors du travail avec différentes versions d'API. Écrire manuellement le code pour chacune de ces conversions est un travail fastidieux, sujet aux erreurs et difficile à maintenir. C'est là que AutoMapper vient à la rescousse.

\n\n

AutoMapper est une bibliothèque open source populaire pour .NET qui automatise le processus de mappage des propriétés d'un objet vers un autre. Elle est basée sur le principe de « convention plutôt que configuration » (convention over configuration). Cela signifie que si les noms et les types des propriétés dans les objets source et cible correspondent (ou suivent certaines règles), AutoMapper peut effectuer le mappage sans spécification explicite des règles. Si les règles diffèrent, vous pouvez facilement les configurer à l'aide d'une API flexible.

\n\n

La bibliothèque réduit considérablement la quantité de code standard, rend le code plus propre, réduit le nombre d'erreurs liées aux affectations manuelles et simplifie le refactoring. AutoMapper est largement utilisé dans les projets ASP.NET Core, WPF, Xamarin et d'autres applications .NET.

\n\n

Installation d'AutoMapper

\n\n

AutoMapper est distribué via NuGet, le gestionnaire de packages officiel pour .NET. Il peut être installé de plusieurs manières :

\n\n

1. Via la console du gestionnaire de packages (Package Manager Console)

\n
Install-Package AutoMapper
\n\n

2. Via .NET CLI

\n
dotnet add package AutoMapper
\n\n

3. Via l'interface Visual Studio (Manage NuGet Packages)

\n

Ouvrez le projet -> Clic droit sur le projet -> "Manage NuGet Packages" -> recherchez "AutoMapper" -> installez la dernière version stable.

\n\n

Pour travailler avec ASP.NET Core, il est également recommandé d'installer le package AutoMapper.Extensions.Microsoft.DependencyInjection, qui simplifie l'intégration avec le conteneur DI :

\n
dotnet add package AutoMapper.Extensions.Microsoft.DependencyInjection
\n\n

Démarrage rapide : premier mappage

\n\n

Créons un exemple très simple. Nous avons une classe UserEntity (de la base de données) et UserDto (pour la transmission au client).

\n\n
using AutoMapper;\n\n// 1. Classes source et cible\npublic class UserEntity\n{\n    public int Id { get; set; }\n    public string FirstName { get; set; }\n    public string LastName { get; set; }\n    public string Email { get; set; }\n}\n\npublic class UserDto\n{\n    public int Id { get; set; }\n    public string FirstName { get; set; }\n    public string LastName { get; set; }\n    public string Email { get; set; }\n}\n\n// 2. Création de la configuration et du Mapper\nvar config = new MapperConfiguration(cfg =>\n{\n    cfg.CreateMap<UserEntity, UserDto>();\n});\n\nvar mapper = config.CreateMapper();\n\n// 3. Utilisation\nvar userEntity = new UserEntity\n{\n    Id = 1,\n    FirstName = "Иван",\n    LastName = "Петров",\n    Email = "ivan@example.com"\n};\n\nvar userDto = mapper.Map<UserDto>(userEntity);\n\nConsole.WriteLine(userDto.FirstName); // Affiche : Иван
\n\n

Dans cet exemple, nous avons créé une carte (Map) entre UserEntity et UserDto. Comme les noms des propriétés correspondent, AutoMapper les a automatiquement mappées. La méthode Map<TDestination>(source) effectue le mappage et retourne un nouvel objet du type cible.

\n\n

Méthodes et fonctions principales d'AutoMapper

\n\n

AutoMapper fournit une API riche pour configurer le mappage. Voici 10 méthodes et fonctions clés que vous utiliserez le plus souvent.

\n\n

1. CreateMap<TSource, TDestination>()

\n

Ce qu'elle fait : Crée une configuration de mappage entre deux types. C'est la méthode principale pour déclarer une carte.

Recommendations