Classe et propriétés !

Le
Thierry
Bonsoir,
Pas encore bien familiarisé avec VB.Net 2005 je ne trouve pas la solution à
mon problème :
Dans une Classe, j'ai une propriété en lecture/écriture. En écriture je dois
passer un paramètre afin de faire un petit calcul avant de stocker la
valeur. En lecture je récupère simplement ma valeur. Le problème c'est que
quand je veux lire la valeur de la propriété (lecture) je suis obligé de
fournir un paramètre (du même type que celui utilisé au moment de
l'écriture).
Il existe certainement une solution pour obtenir ma valeur sans fournir de
paramètre !

Merci pour votre aide.

@+
Thierry
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bill2
Le #12256681
Thierry wrote:
Bonsoir,
Pas encore bien familiarisé avec VB.Net 2005 je ne trouve pas la
solution à mon problème :
Dans une Classe, j'ai une propriété en lecture/écriture. En écriture
je dois passer un paramètre afin de faire un petit calcul avant de
stocker la valeur. En lecture je récupère simplement ma valeur. Le
problème c'est que quand je veux lire la valeur de la propriété
(lecture) je suis obligé de fournir un paramètre (du même type que
celui utilisé au moment de l'écriture).
Il existe certainement une solution pour obtenir ma valeur sans
fournir de paramètre !

Merci pour votre aide.

@+
Thierry



rien de complèxe pourtant ...

class MaClasse

private _ValeurDeMaProp as double ' c'est ici que sera stocker la var à
traiter dans la classe


Property MaProp() As Double
Get
MaProp= _ValeurDeMaProp
End Get
Set(ByVal value As Double)
'Traitement sur Value
If value < 0 Then
value = 0
ElseIf value > 100 Then
value = 100
End If
_ValeurDeMaProp = value
End Set
End Property

--
Bill2
Fred
Le #12256661
Dans : news:,
Thierry disait :
Bonsoir,



Bonjour,

Pas encore bien familiarisé avec VB.Net 2005 je ne trouve pas la
solution à mon problème :
Dans une Classe, j'ai une propriété en lecture/écriture. En écriture
je dois passer un paramètre afin de faire un petit calcul avant de
stocker la valeur. En lecture je récupère simplement ma valeur. Le
problème c'est que quand je veux lire la valeur de la propriété
(lecture) je suis obligé de fournir un paramètre (du même type que
celui utilisé au moment de l'écriture).



Un exemple :

Private _prop As String

Public WriteOnly Property prop(ByVal param As Int32) As String
Set(ByVal value As String)

End Set
End Property

Public ReadOnly Property prop() As String
Get
Return Me._prop
End Get
End Property


--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Bill2
Le #12256651
Fred wrote:

Un exemple :

Private _prop As String

Public WriteOnly Property prop(ByVal param As Int32) As String
Set(ByVal value As String)

End Set
End Property

Public ReadOnly Property prop() As String
Get
Return Me._prop
End Get
End Property



euh .. c'est pas cohérent ça, une meme prop qui est à la fois ReadOnly et
Write only ...

Avez-vu mon message et la solution proposée ?

--
Bill2
Fred
Le #12256641
Dans : news:%,
Bill2 disait :
Fred wrote:

Un exemple :

Private _prop As String

Public WriteOnly Property prop(ByVal param As Int32) As String
Set(ByVal value As String)

End Set
End Property

Public ReadOnly Property prop() As String
Get
Return Me._prop
End Get
End Property



euh .. c'est pas cohérent ça, une meme prop qui est à la fois
ReadOnly et Write only ...



Ce n'est pas vraiment la même propriété.

Avez-vu mon message et la solution proposée ?



Oui, elle ne répond pas à la question. Relisez attentivement la
question.

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Bill2
Le #12256631
Fred wrote:

Avez-vu mon message et la solution proposée ?



Oui, elle ne répond pas à la question. Relisez attentivement la
question.



au contraire, elle répond parfaitement !
J'ai proposé un prop en lecture écriture, avec des manips lors de
l'ecriture, et un renvoi direct de la valeur lors de la lecture.

De plus, y'a un truc louche dans votre proposition :

Public WriteOnly Property prop(ByVal param As Int32) As String
Set(ByVal value As String)

End Set
End Property

on demande un 1er param en Int32, et un 2e en string ?

--
Bill2

Proverbe à la con : Evitez la langue de bois, ça laisse des échardes
Fred
Le #12256621
Dans : news:,
Bill2 disait :
Fred wrote:

Avez-vu mon message et la solution proposée ?



Oui, elle ne répond pas à la question. Relisez attentivement la
question.



au contraire, elle répond parfaitement !



Si vous le dites.

on demande un 1er param en Int32, et un 2e en string ?



Je cite la question :
<citation>
En écriture je dois passer un paramètre afin de faire un petit calcul
avant de stocker la valeur.
</citation>

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Bill2
Le #12256611
Fred wrote:


Si vous le dites.

on demande un 1er param en Int32, et un 2e en string ?



Je cite la question :
<citation>
En écriture je dois passer un paramètre afin de faire un petit calcul
avant de stocker la valeur.
</citation>



et ben, mon Set répond à ca justement ...

Set(ByVal value As Double)
'Traitement sur Value
If value < 0 Then
value = 0
ElseIf value > 100 Then
value = 100
End If
_ValeurDeMaProp = value
End Set

mon traitement n'est qu'un exemple de calcul, à lui de code ce qu'il voudra
...
donc, je réitère ma proposition, en détaillant :

' au niveau de la classe
private _ValeurDeMaProp as double ' c'est ici que sera stocker la var à
traiter dans la classe

' la propriété
Property MaProp() As Double
' le GET, qui ne fait aucun traitement, et se contente de renvoyer
la valeur
Get
MaProp= _ValeurDeMaProp
' ou return _ValeurDeMaProp, ce qui reivne au même ....
End Get

' le Set, qui doit prendre un param, et faire un calcul, puis
stocker le résultat
Set(ByVal value As Double)
'Traitement sur Value
If value < 0 Then
value = 0
ElseIf value > 100 Then
value = 100
End If

' on stocke le résultat du calcul
_ValeurDeMaProp = value
End Set
End Property


j'ai donc bien une seule prop, en lecture/ecriture, avec un traitement au
niveau de l'écriture ...
--
Bill2
Fred
Le #12256601
Dans : news:%,
Bill2 disait :

<citation>
En écriture je dois passer un paramètre afin de faire un petit calcul
avant de stocker la valeur.
</citation>



et ben, mon Set répond à ca justement ...



Je crois comprendre que Thierry veut écrire :
obj.Prop(param) = valeur

et en lecture simplement écrire :
valeur = obj.Prop
plutôt que
valeur = obj.Prop(paramInutile)

Une propriété paramétrée quoi. Rien de très complexe en somme.
Avez-vous compris ce que j'ai compris de la question ? Je ne dis pas que
c'est *certainement* cela. Mais simplement ce que sa formulation laisse
entendre.

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Bill2
Le #12256591
Fred wrote:
Dans : news:%,




Je crois comprendre que Thierry veut écrire :
obj.Prop(param) = valeur

et en lecture simplement écrire :
valeur = obj.Prop
plutôt que
valeur = obj.Prop(paramInutile)

Une propriété paramétrée quoi. Rien de très complexe en somme.
Avez-vous compris ce que j'ai compris de la question ? Je ne dis pas
que c'est *certainement* cela. Mais simplement ce que sa formulation
laisse entendre.




ben ... c'est exactement le comportement offert par ma proposition ça ...

--
Bill2

Philosophie : Il est préférable d'ouvrir un mail avec virus qu'une
lettre avec anthrax.
Fred
Le #12256581
Dans : news:,
Bill2 écrivait :
Fred wrote:
Dans : news:%,





Je crois comprendre que Thierry veut écrire :
obj.Prop(param) = valeur





ben ... c'est exactement le comportement offert par ma proposition ça
...



Que nous n'ayons pas interprété la question de la même façon, je peux le
comprendre, et même, je m'en félicite.
Que vous me disiez que votre code fait ce que j'ai écrit plus haut :

--->>>> obj.Prop(param) = valeur <<<<---

c'en est une autre chose.

Écrivez votre bout de code dans une classe que nous appellerons MaClasse
(je reprends votre terminologie afin que cela soit plus clair).
Ensuite, essayez ceci :

Dim obj As New MaClasse
Dim LeParametreDeThierry As Int32 = 0 'pourquoi pas ? il n'a pas
précisé le type
Dim LaValeurDeThierry As Double = 719 'ça, c'est d'après votre code

'C'est là que ça devient intéressant
obj.MaProp(LeParamètreDeThierry) = LaValeurDeThierry

Qu'est-ce que cela donne ?
Ça compile ?
Peut-être n'avez-vous pas eu le temps de tester depuis ce matin ?

Donc réitérez autant que vous voudrez votre proposition, je ne l'ai
nullement critiquée mais ai simplement proposé une autre
approche de la question. Deux propositions différentes pour deux
interprétations différentes, cela ne me semble pas toujours inutile.

EOT

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Publicité
Poster une réponse
Anonyme