Valeur de propriété à type variable

Le
Gilbert Tordeur
Bonjour,

J'écris une dll en VB2005 (je pourrais l'écrire en VB2008 si besoin), dont
le but est de lire tous les paramètres d'exécution d'un programme à partir
d'une table de base de données.

En gros, la table contient les champs suivants :
- nom du programme (varchar)
- clé du paramètre (int)
- description du paramètre (varchar)
- type du paramètre (varchar)
- valeur du paramètre (varchar)

Le type du paramètre indique si sa valeur est par exemple un Integer, un
String, un Char, un Boolean, un Array of Integer, etc.

Chacun des paramètres est chargé dans une classe ParametreProgramme, dont
les 5 propriétés ReadOnly permettent de lire les valeurs des champs énumérés
ci-dessus.

Un programme pouvant avoir plusieurs paramètres, une classe Programme
fournit une propriété ParametresProgramme qui est une collection de
ParametreProgramme.

Chaque programme appelle la dll pour lire ses paramètres. Il pourrait bien
sûr recevoir systématriquement une valeur String, à charge pour lui de
convertir dans le type adéquat. Je préfèrerais que ce soit la dll qui fasse
la conversion, pour renvoyer soit un Integer, soit un String, soit un Char,
etc. en fonction de son type. Problème, VB2005 refuse de surcharger une
propriété dont seuls les types de retour sont différents. Je pourrais
multiplier les propriétés : ValueInteger, ValueString, ValueChar, etc., mais
c'est fastidieux, lourd et inélégant.

Quelqu'un a-t-il mieux à proposer ?

Merci d'avance,
Gilbert
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles TOURREAU [MVP]
Le #12209161
"Gilbert Tordeur" news:
Bonjour,

J'écris une dll en VB2005 (je pourrais l'écrire en VB2008 si besoin), dont
le but est de lire tous les paramètres d'exécution d'un programme à partir
d'une table de base de données.

En gros, la table contient les champs suivants :
- nom du programme (varchar)
- clé du paramètre (int)
- description du paramètre (varchar)
- type du paramètre (varchar)
- valeur du paramètre (varchar)

Le type du paramètre indique si sa valeur est par exemple un Integer, un
String, un Char, un Boolean, un Array of Integer, etc.

Chacun des paramètres est chargé dans une classe ParametreProgramme, dont
les 5 propriétés ReadOnly permettent de lire les valeurs des champs
énumérés ci-dessus.

Un programme pouvant avoir plusieurs paramètres, une classe Programme
fournit une propriété ParametresProgramme qui est une collection de
ParametreProgramme.

Chaque programme appelle la dll pour lire ses paramètres. Il pourrait bien
sûr recevoir systématriquement une valeur String, à charge pour lui de
convertir dans le type adéquat.



Ok, mais il faudra à la lecteur convertir la valeur chaine obtenu du SGBD en
une valeur .NET (int, float, string...etc)

Je préfèrerais que ce soit la dll qui fasse la conversion, pour renvoyer
soit un Integer, soit un String, soit un Char, etc. en fonction de son
type.
Problème, VB2005 refuse de surcharger une propriété dont seuls les types
de retour sont différents. Je pourrais multiplier les propriétés :
ValueInteger, ValueString, ValueChar, etc., mais c'est fastidieux, lourd
et inélégant.



Vous n'aurez pas le choix de faire une unique propriété qui retourne un
objet pour être le plus générique possible :

Public ReadOnly Property Valeur() As Object
Get
Return ...
End Get
End Property

Il faudra juste caster au moment de la lecture de celle-ci...

Dim val As Integer;
val = CType(MaPropriété.Valeur, Int)


Quelqu'un a-t-il mieux à proposer ?

Merci d'avance,
Gilbert




Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Patrice
Le #12208921
Si je comprends bien peut-être en regardant du coté des Generics en
VB2008 (ce qui permettrait d'exposer sans doute le type du paramètre
ainsi qu'une fonction à laquelle on passe son type :
MyParameter.GetValue(MyParameter.Type) par exemple...

Si c'est pour lire dans un programme spécifique je typerais fortement
le tout à la base (MySettings.Title, MySettings.PageSize avec une
propriété par paramètre de fonctionnement etc...) . Sinon on peut
creuser l'approche ci-dessus si c'est plutôt un programme généraliste
qui lit pour info des paramètres exploités par d'autres
applications...

--
Patrice
Gilbert Tordeur
Le #12208511
Merci, je vais creuser tout ceci. Et mes excuses pour le retard dû à une
petite indisponibilité.
Gilbert


"Gilbert Tordeur"
Bonjour,

J'écris une dll en VB2005 (je pourrais l'écrire en VB2008 si besoin), dont
le but est de lire tous les paramètres d'exécution d'un programme à partir
d'une table de base de données.

En gros, la table contient les champs suivants :
- nom du programme (varchar)
- clé du paramètre (int)
- description du paramètre (varchar)
- type du paramètre (varchar)
- valeur du paramètre (varchar)

Le type du paramètre indique si sa valeur est par exemple un Integer, un
String, un Char, un Boolean, un Array of Integer, etc.

Chacun des paramètres est chargé dans une classe ParametreProgramme, dont
les 5 propriétés ReadOnly permettent de lire les valeurs des champs
énumérés ci-dessus.

Un programme pouvant avoir plusieurs paramètres, une classe Programme
fournit une propriété ParametresProgramme qui est une collection de
ParametreProgramme.

Chaque programme appelle la dll pour lire ses paramètres. Il pourrait bien
sûr recevoir systématriquement une valeur String, à charge pour lui de
convertir dans le type adéquat. Je préfèrerais que ce soit la dll qui
fasse la conversion, pour renvoyer soit un Integer, soit un String, soit
un Char, etc. en fonction de son type. Problème, VB2005 refuse de
surcharger une propriété dont seuls les types de retour sont différents.
Je pourrais multiplier les propriétés : ValueInteger, ValueString,
ValueChar, etc., mais c'est fastidieux, lourd et inélégant.

Quelqu'un a-t-il mieux à proposer ?

Merci d'avance,
Gilbert



Publicité
Poster une réponse
Anonyme