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…

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!

Advertisements

2 avis sur « Automatiser le mappage de données entre objets avec Automapper »

  1. sabeel dit :

    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 )

Image Twitter

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

Photo Facebook

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

Photo Google+

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

Connexion à %s

%d blogueurs aiment ce contenu :