Les liens de la semaine – Édition #227

Développement

.NET

Web

Technologie

Science et autres

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!