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 :

Interfaces et conversions d'objets


Sujet :

VB.NET

  1. #21
    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
    Cela veut dire que tu peux passer un "type de classe" en paramètre et récupérer une instance de ce "type".


    Du genre
    FABRIQUE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Public Shared Function FabriqueClasse(Of T As {New})() As T
            Return New T
        End Function
    DAL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       Public Function GetSingleDTO(Of T As {New})(ByVal Requete As String) As DTOBase
            Dim Reader As DbDataReader
            Dim parser As Object ' obligatoirement en objet, sinon si de type T => méthodes populate non connues
            Try
                If ExecuterReader(Requete, Reader) = 0 Then
                    If Reader.HasRows Then
                        Reader.Read()
                        parser = DTOParserFactory.FabriqueClasse(Of T)()
                        parser.PopulateOrdinals(Reader)
                        Return parser.PopulateDTO(Reader)
    '...
    Appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Public Function GetPersonId(ByVal PersonId As String) As PersonDTO
            Const K_REQUETTE As String = "select * from personnes where PersonId = ?"
            Try
                DALApp.AjouteParam("PersonId", DbType.String, PersonId)
                Return DALApp.GetSingleDTO(Of DTOParser_Person)(K_REQUETTE)
    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.

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Merci beaucoup pour ces explications !

    Je suis étonné de ne pas voir ce genre de principe dans les tutos expliquant les archis N-Tiers car je suis vraiment dans une problématique entreprise et l'archi N-Tiers (Cf tuto ici même) s'arrete juste avant de traiter ce niveau. Je pense que beaucoup de monde pourrait gagner son temps à utiliser ce principe là.
    Qu'en pensez vous (d'après vos propres experiences professionnelles de projets BLL inter projets front end)

  3. #23
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Les génériques sont une vraie innovation dans la programmation orientée objet.
    Ils ouvrent des perspectives vraiment intéressantes en terme de factorisation et de découplage du code.

    L'exemple que donne rv26t est (vraisemblablement) inspiré de l'excellente série d'articles sur une couche d'accès aux données performante que je mentionne dans la traduction que j'ai faite de l'article Quelle est la différence entre un DTO et un POCO ? (voir les Liens utiles).
    Je te recommande chaudement la lecture de ces articles. Je viens de voir que tu as déjà lu la traduction, puisque nous en avons un peu discuté.

    Comme tu le dis, le principe de l'architecture "N-Tiers" s'arrête au niveau des couches. Elle ne présuppose pas de l'utilisation des génériques qui n'existent pas dans tous les langages objets.

    Enfin, dans mon exemple, dans la déclaration générique, j'ai ajouté ce qu'on appelle des contraintes de type.
    Cela restreint l'utilisation de la méthode aux seuls types qui implémentent l'interface IPerson et qui possèdent un constructeur vide public (New) de façon à ce que tu puisses créer une nouvelle instance de T.
    En effet, sans connaitre l'implémentation de ta méthode, je me suis dit que tu aurais certainement besoin d'instancier les objets puisqu'il s'agit de la couche de persistance !
    Et comme tu l'as vu toi-même, grâce à cette contrainte de type, tu peux écrire quelque chose comme :
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim person As T = New T()
    Sans ça tu ne peux pas.

  4. #24
    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 Skalp Voir le message
    ...
    L'exemple que donne rv26t est (vraisemblablement) inspiré de l'excellente série d'articles sur une couche d'accès aux données performante que je mentionne dans la traduction que j'ai faite de l'article ...
    Je suis effectivement parti sur ces articles en langue anglaise.
    Et j'ai essayé de creuser dans ce sujet pour rendre plus général (voir à partir du post 14) et la solution a été d'utiliser les génériques. (post 27)
    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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Champs SQL Server Binary (image) conversion LINQ-objet image
    Par pierrot2k dans le forum Windows Presentation Foundation
    Réponses: 15
    Dernier message: 05/05/2008, 16h56
  2. conversion des objets
    Par Nayila dans le forum Langage
    Réponses: 7
    Dernier message: 09/01/2008, 09h27
  3. Conversion contenu objet File en variable String
    Par theleek dans le forum JSF
    Réponses: 2
    Dernier message: 20/12/2007, 11h31
  4. Interface graphique "statique" ou "objet" ?
    Par agent007se dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 22/01/2007, 01h16
  5. interface : multi surface et objet
    Par DEVfan dans le forum SDL
    Réponses: 1
    Dernier message: 31/07/2006, 22h33

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