Automatiser le mappage de données entre objets avec Automapper

Je dois l’admettre. Le mémo a passé et je ne l’ai jamais lu. C’est au sujet d’Automapper.

L’avez-vous lu, vous?

Toutes ces années à écrire du code sans savoir que je pouvais automatiser la tâche la plus ennuyeuse de toutes! Celle d’instancier un objet à partir des données d’une autre source de données!

À quoi ressemble l’utilisation d’Automapper? À ceci…


//configuration, se réalise habituellement au démarrage de votre application
Mapper.CreateMap<Model, ViewModel>();
//création d'un objet "Model" pouvant provenir d'une base de données
var model = new Model
{
PageTitle = "Titre de page"
};
//Mappage du Model en ViewModel
var viewModel = Mapper.Map<Model, ViewModel>(model);
//retourne "Model
Console.WriteLine(viewModel.PageTitle);

view raw

automapper.cs

hosted with ❤ by GitHub

C’est assez simple, n’est-ce pas? Comme l’expression le dit, le meilleur code est celui que vous n’avez pas à écrire!

L’idée est que vous pouvez configurer l’association des propriétés d’un objet source vers un objet destination. Mon cas d’exemple est assez simplet, j’en conviens. Il y a qu’une seule propriété qui est associée (PageTitle). Toutefois, vous remarquerez qu’Automapper a détecté la présence de cette propriété dans ces deux classes et a associé leur contenu automatiquement.

Le comportement d’Automapper est d’associer le contenu par convention. La règle est que, si le nom correspond exactement ou est identifié selon certaines règles, leur contenu sera associé. Aussi simple que ça.

La plus belle qualité d’Automapper est les possibilités de configuration des fonctionnalités de mappage. Sans trop se casser la tête, par exemple, il est possible d’aplatir un objet, faire de la projection de données ou même des mappages conditionnels sur des données d’un objet source. Et beaucoup plus encore!

Cela fait maintenant quelques semaines que je l’utilise dans mes développements et j’aime beaucoup le code d’instanciation d’objets que je n’ai plus à écrire. Dans mon cas, j’ai été en mesure de simplifier par beaucoup l’apparence de certains de mes contrôleurs MVC juste en éliminant l’instanciation de modèles de vue.

L’essayer c’est l’adopter, je vous le dis!

Publicité

Auteur : Pascal Paradis

Je suis les mains et le cerveau derrière http://frenchcoding.com. Je développe des microservices chez @UbisoftMTL. Amateur de Hockey et j'aime la technologie, en général.

2 réflexions sur “Automatiser le mappage de données entre objets avec Automapper”

  1. Je sais pas si t’eu la chance d’essayer ValueInjecter qui est moin verbatif que l’autre :
    Ton exemple donne :

    var s = new Source { Id = 3, Name = « Bill » };
    var t = new Target();

    //Si le deux classe ont la même propriétés.
    t.InjectFrom(s);

Laisser un commentaire

Entrer les renseignements ci-dessous ou cliquer sur une icône pour ouvrir une session :

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

%d blogueueurs aiment cette page :