IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

DTO & POCO : Quid de l'héritage ?


Sujet :

VB.NET

  1. #61
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par Kikuts Voir le message
    J'étais déjà sur un projet console avec mes classes Animal, Serpent, Chien

    Par contre c'est un peu prise de tête dans ce cas de figure donc si tu as besoin d'un résultat rapide, je te conseil de commencer par créer une classe wrapper comme on a dit pour encapsuler tes données d'affichages.

    Et une fois que j'aurais trouvé (si je trouve haha) tu pourras faire évoluer ton code et supprimer la classe

    Petit exemple de ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    List<Animal> animaux = GetAnimaux();
    List<Serpent> serpents = GetSerpents();
    List<Chien> chiens = GetChiens();
     
    var liste = (from a in animaux select a).Union(from s in serpents select s);
    Faut encore que je modifie le select a et select s pour ne pas récupérer une liste d'animaux

    Là je dois pulsé sur mon projet pour la fin de mâtiné, donc j'essaye de terminer à midi.
    Super sympa mais fait ton taff avant tout hein ^^.

    En attendant, je vais continuer avec la classe wrapper en plus alors. J'vais l'appeler wrapper, c'est un mot que mes collègues ne connaissent pas. Ca va faire super pro, les impressionner et ils vont croire que c'est le nec plus ultra XD
    Kropernic

  2. #62
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Points : 963
    Points
    963
    Par défaut
    mdr !!! oui c'est le genre de nom qui passe bien lol

    sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    List<Animal> animaux = GetAnimaux();
    List<Serpent> serpents = GetSerpents();
    List<Chien> chiens = GetChiens();
     
    var liste = (from a in animaux select new { Id = a.Id, Nom = a.Nom, NbMue = 0 }).Union(from s in serpents select new { Id = s.Id, Nom = s.Nom, NbMue = s.NbMue });
     
     
    var liste2 = from element in (from a in animaux select new { Id = a.Id, Nom = a.Nom, NbMue = 0 }).Union(from s in serpents select new { Id = s.Id, Nom = s.Nom, NbMue = s.NbMue })
    select new { Id = element.Id, Nom = element.Nom, NbMue = element.NbMue };
     
    var x = liste; // point d'arrêt
    var y = liste2; // point d'arrêt
    moi j'ai pas d'erreur et ça passe sans erreur. Mes points d'arrêt me montrent des listes anonyme bien remplies.

    mes classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public class Animal
    {
    	public int Id { get; set; }
    	public string Nom { get; set; }
    }
     
    public class Serpent : Animal
    {
    	public int NbMue { get; set; }
    }
     
    public class Chien : Animal
    {
    	public int NbPorte { get; set; }
    }
    "S'adapter, c'est vaincre" - Cellendhyll de Cortavar

  3. #63
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Oui mais là tu fais une union de serpents avec animaux.

    Comme serpents est dérivé de animaux, ça passe. (enfin c'est ce que je comprends du message d'erreur que je reçois)

    Essaie un peu de faire une union de chiens avec serpents ? (vive l'hybridation XD)
    Kropernic

  4. #64
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Points : 963
    Points
    963
    Par défaut
    Ok je vais manipuler les gènes par contre par sur que j'ai une liste d'anonyme en retour ! Ca sera peut être des chierpent
    "S'adapter, c'est vaincre" - Cellendhyll de Cortavar

  5. #65
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    C'est pas top avec LinQ, même s'il y a de l'idée Il faut que les propriétés soient de même type, donc si par exemple ChienDTO a une propriété NombreMue de type string, et SerpentDTO a une propriété NombrePortee de type int, ça ne fonctionnera pas naturellement.

    Normalement au moment du binding tu dois savoir ce que tu veux afficher : des chiens ou des serpents. Si tu veux afficher les deux, il est recommandé de passer par une classe dédiée au binding pour faire ça proprement.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #66
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Points : 963
    Points
    963
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var liste2 = (from c in chiens select new { Id = c.Id, Nom = c.Nom, Nb = c.NbPorte }).Union(from s in serpents select new { Id = s.Id, Nom = s.Nom, Nb = s.NbMue });
    var x2 = liste; //pour point d'arrêt
    Euh ... j'ai découvert une nouvelle espèce parce que ça passe facile aussi

    Ci joint le zip du projet
    Fichiers attachés Fichiers attachés
    "S'adapter, c'est vaincre" - Cellendhyll de Cortavar

  7. #67
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Points : 963
    Points
    963
    Par défaut
    Et bien dans ce cas, lors de la construction du type anonyme, on stocke le int dans le string si ce n'est que de l'affichage -> select new { Nb = NbMue.ToString()} //tadaaaaaa ! que c'est propre ...

    Du coup, va falloir te créer ta classe ChierpentWrapper ^^ (j'avoue que ça reste plus propre car tu pourras avoir des méthodes propres à ton UI, plus facile à étendre avec des nouvelles property).

    Mais la requête avec type anonyme a été sympa

    Comme Mat le dit (le bougre il est rapide ! c'est ce que j'allais dire ! mais je voulais vérifier dans tes projets avant ^^), je pense que l'un de types de classe A ne correspond pas à la classe B. Du coup il type ta variable NombreTruc (qui stocke nbmue ou nbportée) avec le premier qu'il trouve donc du string puis il essayera de faire un union avec du integer.

    [Troll On] On est pas en PHP ici ! ça passe pas ! [Troll off]
    "S'adapter, c'est vaincre" - Cellendhyll de Cortavar

  8. #68
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bon bin voilà alors.

    Wrapper ce sera !

    Je pense que ce coup-ci, la boucle est bouclée et je passe donc la discussion en résolue.

    Merci à tous pour votre participation !
    Kropernic

  9. #69
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par rv26t Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Dim oListeBestioles = (From oSerpent In ListeSerpent Select {oSerpent.SDTO.Nom, oSerpent.SDTO.Age, oSerpent.SDTO.NombreMue, ""}).Union _
                                  (From oChien In listeChien Select {oChien.Cdto.Nom, oChien.Cdto.Age, "", oChien.Cdto.NombrePortee})
    C'est pour cela que je placait des "" dans les non correspondance de colonnes dans chaque select.
    Et cette requete me renvoyais bien une liste avec l'ensemble.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  10. #70
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Points : 963
    Points
    963
    Par défaut
    Pas faux
    "S'adapter, c'est vaincre" - Cellendhyll de Cortavar

  11. #71
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Exemple (j'ai restructuré mes classes CDD en test manuel pour quelle correspondent mieux à nos essais).

    Classe DTO base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Public Class BaseDTO
        Public Property IsNew As Boolean
    End Class
     
    Public Class AnimalDTO
        Inherits BaseDTO
        Public Sub New()
            Me.Age = 0
            Me.Nom = ""
        End Sub
     
        Public Property Age As Integer
        Public Property Nom As String
    End Class
     
    Public Class SerpentDTO
        Inherits AnimalDTO
     
        Public Sub New()
            MyBase.New()
            Me.NombreMue = 0
        End Sub
     
        Public Property NombreMue As Integer
    End Class
     
    Public Class ChienDTO
        Inherits AnimalDTO
     
        Public Property NombrePortee As Integer
     
        Public Sub New()
            MyBase.New()
            Me.NombrePortee = 0
        End Sub
     
    End Class
    Classe CDD (new sur list pour test avec remplissage manuel - pour avoir des listes dto)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Public Class SerpentCDD
        Inherits AnimalsCDD
     
        Public ListSDTO As List(Of SerpentDTO) = New List(Of SerpentDTO)
     
        ' pour remplissage manuel 
        Public Sub Add(ByVal UnNom As String, ByVal UnAge As Integer, ByVal UnNombreDeMue As Integer)
            Dim DTO As SerpentDTO = New SerpentDTO
            DTO.NombreMue = UnNombreDeMue
            DTO.Nom = UnNom
            DTO.Age = UnAge
            ListSDTO.Add(DTO)
        End Sub
    '...
     
    Public Class ChienCDD
        Inherits AnimalsCDD
     
        Public ListCDTO As List(Of ChienDTO) = New List(Of ChienDTO)
     
        ' pour remplissage manuel 
        Public Sub Add(ByVal UnNom As String, ByVal UnAge As Integer, ByVal UnNombreDePortee As Integer)
            Dim dto As ChienDTO = New ChienDTO
            dto.NombrePortee = UnNombreDePortee
            dto.Nom = UnNom
            dto.Age = UnAge
            listcdto.add(dto)
        End Sub
    '...
    Dans un form
    Code pour remplir les listes (sans interrêt, pour info)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Dim ChCDD As New ChienCDD
        Dim SeCDD As New SerpentCDD
     
        Sub RempliListe()
            ' remplissage manuel
            ChCDD.Add("setter", 5, 2)
            ChCDD.Add("Caniche", 3, 1)
     
            SeCDD.Add("boa", 15, 1)
            SeCDD.Add("Couleuvre", 1, 3)
     
        End Sub
    L'affichage (vu rapidement pour test)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
        Dim dt As New DataTable()
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            RempliListe()
     
            Dim oAnimaux = (From oSerpent In SeCDD.ListSDTO Select {oSerpent.Nom, oSerpent.Age, oSerpent.NombreMue, ""}).Union _
                           (From oChien In ChCDD.ListCDTO Select {oChien.Nom, oChien.Age, "", oChien.NombrePortee})
     
            dt.Columns.Add(New DataColumn("Nom"))
            dt.Columns.Add(New DataColumn("Age"))
            dt.Columns.Add(New DataColumn("Mue"))
            dt.Columns.Add(New DataColumn("Portee"))
            For i As Integer = 0 To oAnimaux.Count - 1
                dt.Rows.Add(oAnimaux(i))
            Next
            DataGridView1.DataSource = dt
     
        End Sub
    La première miniature est avec cette méthode (la 2ème (après clic bouton pour rajouter) avec celle-ci + l'autre contenant la requete présentée précedement)
    Images attachées Images attachées  
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  12. #72
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Etes-vous bien en Option Strict On et Option Explicit On ?

    Je demande cela car je m'étonne que cela fonctionne suite à la précision apportée par DotNetMat indiquant que si deux propriétés ne sont pas du même type, tel un certain balrog devant un certain magicien, ça ne passe pas.

    Or si je lis bien votre code, il y a des integers et des strings qui sont mélangés non ?
    Kropernic

  13. #73
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Pas avec strict
    Sinon il refuse les liaisons tardives, et le mélange de type.

    On ne peut pas mettre 0 à la place de "", car 0 est une donnée corecte.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  14. #74
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Pas 0 mais n'importe quel entier négatif ferait l'affaire.

    Perso, je travaille toujours en Option Strict et Explicit. C'est p-e pour ça que j'avais des soucis avec ce matin ^^.
    Kropernic

  15. #75
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    C'est mieux en effet,
    Mais peut-être que pour permettre cet affichage si vous le faite dans un form a part, vous pouvez désactiver cette option avec un commentaire qui explique pourquoi.
    Sinon vous pouvez garder votre Wrapper. C'est aussi une solution.
    Mais celle-ci à l'avantage d'être simple et de ne pas encombrer de classe supplémentaire juste pour un affichage. (si un nombre négatif ne gène pas, il restera la liaison tardive, a tester)
    Ou voir a passer en ToString dans la requete. [Edit](semble ne rien changer)[/Edit]
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  16. #76
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Au passage... C'est quoi une liaison tardive ?
    Kropernic

  17. #77
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  18. #78
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Dans ce cas, je garde mon wrapper.

    J'aime bien les choses rigoureuses moi ^^
    Kropernic

  19. #79
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Tout a fait le Wrapper est une solution propre.
    Après il est toujours intéressant de connaître d'autres solutions.

    Et de choisir en connaissance de cause.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  20. #80
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Un dernier détail... Dans quelle couche placeriez-vous ce wrapper ?

    Instinctivement, je l'ai placé dans la couche DTO mais je me demande s'il ne serait pas mieux dans la couche GUI.

    En effet, les DTO vivent très bien sans. Il n'y a que la partie graphique qui en a besoin pour une raison technique dont les autres couches se moquent totalement.

    Qu'en pensez-vous ?
    Kropernic

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quelle est la différence entre un DTO et un POCO ?
    Par Skalp dans le forum Contribuez
    Réponses: 30
    Dernier message: 08/04/2020, 21h57
  2. Modele de donnée : Dto vs Poco
    Par BenoitM dans le forum ALM
    Réponses: 1
    Dernier message: 21/06/2012, 13h32
  3. [C#] Differences entre POCOs, EF et DTOs
    Par 3logy dans le forum Débuter
    Réponses: 4
    Dernier message: 14/06/2012, 14h26
  4. Réponses: 9
    Dernier message: 23/04/2012, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo