
Envoyé par
Kropernic
... mise à part la factory où, selon l'exemple de l'article, les noms des objets sont hard codés, ...
Justement, j'ai fait une petite modif de ce coté. J'essayerais de faire un billet.
J'ai rendu la méthode générique (note : je ne parle pas des paramètres de la requête pour GetSingleDTO que je passe de façon particulière, ce n'est pas le but du sujet)
1 2 3 4 5 6 7 8 9 10 11
| ''' <summary>DTOParserFactory : fabrique pour obtenir un objet analyseur (parser).</summary>
''' <remarks>Les méthodes sont déclarées en Shared.</remarks>
Public NotInheritable Class DTOParserFactory
''' <summary>Fabrique générique d'analyseur, (Parser) Cré une instance de classe concrête quelconque de type « DTOParser ».</summary>
''' <typeparam name="T">Un type de classe héritant de DTOParser abstraite.</typeparam>
''' <returns>Une instance de la classe DTOParser spécifique demandé par l'application utilisatrice.</returns>
''' <remarks>Méthode générique. Performance. Déclarée en Shared.</remarks>
Public Shared Function FabriqueClasse(Of T As {New})() As T
Return New T
End Function |
Et dans ma nouvelle méthode GetSingleDTO qui se présente ainsi
1 2 3 4 5 6 7 8
| ''' <summary>Lit une ligne de données renvoyé sous forme d'une instance de classe définie par l'appelant.</summary>
''' <typeparam name="T">Type de classe analyseur qui sera utilisé pour créer un DTO léger recevant les données.</typeparam>
''' <param name="Requete">La requête de sélection.</param>
''' <returns>Une instance de classe DTO léger d'un ensemble ligne de données.</returns>
''' <remarks>Méthode générique ne connaissant pas le type de classe analyseur en entrée.
''' Une fabrique générique renvoie une instance de cette classe analyseur,
''' une méthode de cette instance retourne une instance DTO léger contenant l'ensemble d'une ligne de données.</remarks>
Public Function GetSingleDTO(Of T As {New})(ByVal Requete As String) As DTOBase |
Je fais un appel à la fabrique de cette façon (dans GetSingleDTO)
parser = DTOParserFactory.FabriqueClasse(Of T)()
Pour un ensemble d'info (de DTO) j'ai donc une méthode qui renvoi une liste
1 2
| ''' <summary>Lit plusieurs lignes de données renvoyé sous forme d'une liste d'instance de classe définie par l'appelant.</summary>
Public Function GetListDTO(Of T As {New})(ByVal Requete As String) As List(Of DTOBase) |
Cela fonctionne très bien, mais il me reste un petit souci avec le parser que je dois déclarer de type object, je préférerais arriver à le typer.
Voilà, simplement pour dire que l'on peut, comme l'indique Kropernic, puiser des idées et adapter à ses besoins.
Les messages arrivent plus vite que mes réponses.
Partager