Automapper, mapping objet – objet

Automapper, mapping objet – objet

Automapper est une librairie permettant de faire du mapping objet – objet.

Je m’explique, vous avez une classe A qui comporte des propriétés, et une classe B qui comporte elle aussi ses propres propriétés, cette librairie permet de transformer un objet A en un objet B.

Ci dessous un exemple de son utilisation :

Public Class MaClasseA
    Private _prop1 As Integer
    Public Property Prop1() As Integer
        Get
            Return _prop1
        End Get
        Set(ByVal value As Integer)
            _prop1 = value
        End Set
    End Property

    Private _prop2 As String
    Public Property Prop2() As String
        Get
            Return _prop2
        End Get
        Set(ByVal value As String)
            _prop2 = value
        End Set
    End Property

    Private _prop3 As Boolean = False
    Public Property Prop3() As Boolean
        Get
            Return _prop3
        End Get
        Set(ByVal value As Boolean)
            _prop3 = value
        End Set
    End Property

    Private _prop4 As Boolean = False
    Public Property Prop4() As Boolean
        Get
            Return _prop4
        End Get
        Set(ByVal value As Boolean)
            _prop4 = value
        End Set
    End Property

    Private _items As List(Of MaClasseA)
    Public Property Items() As List(Of MaClasseA)
        Get
            Return _items
        End Get
        Set(ByVal value As List(Of MaClasseA))
            _items = value
        End Set
    End Property
End Class
Public Class MaClasseB
    Private _value As Integer
    Public Property Value() As Integer
        Get
            Return _value
        End Get
        Set(ByVal value As Integer)
            _value = value
        End Set
    End Property

    Private _text As String
    Public Property Text() As String
        Get
            Return _text
        End Get
        Set(ByVal value As String)
            _text = value
        End Set
    End Property

    Private _checked As Boolean = False
    Public Property Checked() As Boolean
        Get
            Return _checked
        End Get
        Set(ByVal value As Boolean)
            _checked = value
        End Set
    End Property

    Private _childs As List(Of MaClasseB)
    Public Property Childs() As List(Of MaClasseB)
        Get
            Return _childs
        End Get
        Set(ByVal value As List(Of MaClasseB))
            _childs = value
        End Set
    End Property
End Class

Nous allons donc maintenant copier une liste d’objets de type MaClasseA en liste d’objets MaClasseB en 2 secondes montre en main !

Tout d’abord, définissez les mappages entre les classes :

AutoMapper.Mapper.CreateMap(Of MaClasseA, MaClasseB)() _
     .ForMember(Function(dest) dest.Value, Sub(y) y.MapFrom(Function(src) src.Prop1)) _
     .ForMember(Function(dest) dest.Text, Sub(y) y.MapFrom(Function(src) src.Prop2)) _
     .ForMember(Function(dest) dest.Items, Sub(y) y.MapFrom(Function(src) src.Childs))

Une fois celà fait, nous allons donc copier nos objets de type MaClasseA dans des objets de type MaClasseB :

    'Pour cette exemple, maListeA est une liste remplie d'objets de type MaClasseA

    'On défini une nouvelle liste vierge d'objets de classe MaClasseB
    Dim maListeB As New List(Of MaClasseB)
    maListeB = AutoMapper.Mapper.Map(maListeA, maListeB)

Et voilà, nous avons une liste B remplies d’objets 🙂

Pour télécharger Automapper, rendez-vous sur http://automapper.org/

Pas de commentaire

Écrire un commentaire