Conception d'une classe externe d'outil
Salut tout le monde.
J'ai décidé de me mettre au C# alors que je fais du VB depuis pas mal d'années. Du coup, au lieu de me goinfrer un tuto empirique j'ai pris le parti de reprendre ce que j'ai fait en VB et de le "traduire" en C#. Aprés quelques déboires j'en suis à faire une classe externe, mais avant j'aimerais prendre votre avis sur la conception de la chose. Il est fort possible que je me sois gaullé sur la conception du biniou.
Je vais vous soumettre mon cheminement et j'espère vos critiques consctructives pour me dire où je me suis planté. Ensuite, je traduis tout en C# (vous m'excuserais donc de placer du code VB)
D'abords j'ai fais ma classe avec ce genre de chose :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Imports Microsoft.VisualBasic
Namespace ProjetX
Public Class Outils
Public Shared Sub RemplirListe(ByRef lstParam As Object, ByVal rq As String)
'l'idée ici est d'envoyer une référence à un DDL pour la remplir avec une requête envoyée en paramettre
'je ne mets pas le code liu même car il n'y a que peu d'intérêt
End Sub
Public Shared Function GetApplicationGUID() As Guid
'Fonction de récupération du GUID de l'application courante
'là c'est histoire de vous montrer que je fais aussi des Function pour retourner quelquechose.
End Function
End Class
End Namespace |
Donc, j'ai fais un Namespace ProjetX (que j'ai mis dans toutes mes classes) pour pouvoir accéder à la chose facilement.
Dans le web.config j'ai mis ça :
Code:
1 2 3 4 5 6 7
|
<system.web>
<pages theme="" validateRequest="false">
<namespaces>
<clear/>
<add namespace="ProjetX"/>
</namespaces> |
J'ai mis d'autre NameSpace, mais c'est pas utile de tout remettre ici, histoire de pas surcharger. Je n'ai rien mis d'autres dans le web.confgi concernant la classe Outils.
Ensuite, dans mon code, n'importe où (page, ASCX, autre classe externe, ...) j'utilise la chose comme ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
Imports ProjetX.Outils
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
Dim a as String = GetApplicationGUID().ToString
'ou encore, avec une DDL placée côté HTML
RemplirListe(ddl, "la requête SQL")
'ou même si je fabrique la DDL dans le CodeBehind
Dim ddlCB as New DropDownList
RemplirListe(ddlCB, "la requête SQL")
End Sub |
Tout ça fonctionne trés bien, mais je me demande s'il n'y a pas plus performant et plus pratique encore. Et du coup, vu que je passe au C#, est ce qu'il n'y a pas un truc plus mieux avec ce Langage ?
Vous noterez également l'absence de Sub New dans ma classe. Cet ensemble d'outil sert à rammener des paramettres pour le site qui sont stockés en base, remplir des listes déroulantes de manière automatique en éliminant le code répétitif du remplissage d'une liste (que ce soit DDL ou CheckBoxList, ou autre), récupérer des GUID d'application ou d'utilisateur et encore plein de trucs utiles dans plein de page qui demande 5-6 lignes et qu'il est plus simple de ne pas répéter avec un appel de Sub ou de Function.
Auriez vous l'amabilité de corriger ma conception ou de confirmer que j'ai eu la bonne démarche ?