transfert d'objet d'une class à l'autre
Bonjour,
J'ai qlq soucis a faire passer un objet d'une classe à l'autre.
Le code ci-dessous illustre mon probleme.
Chacune de ces classes sera compilée à part.
La Form1 sera le programme appelant.
Dans mon form1, l'appel a myback.testlayer() passe par la class Back et fini dans la class general_cmd. Dans ce cas, je peux récupérer la variable "layer" definie dans la classe back. Là tous va bien.
En revanche quand j'appelle "myback.cstage.StageStart()", je passe par la classe Back puis par la sous class STAGE et enfin je reviens dans la class general_cmd. En revanche la variable "layer" est vide... je l'ai donc perdu en court de route avec mon passage dans la sous class STAGE.
Comment faire pour garder la valeur de "layer", même si je passe par plusieurs classes avec de me servir de "layer" ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| Public Class Form1
Dim myback As New Back
Dim myfront As New Front
'Dim mymiddle As New Middle
Private Sub bback_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bback.Click
myback.cstage.StageStart()
myback.cdirector.DirectorStart()
myback.testlayer()
End Sub
Private Sub bfront_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bfront.Click
myfront.cstage.StageStart()
End Sub
End Class
Public Class Back
Inherits General_cmd
' ici le programme appelant doit passer et valider la variable mylayer=layer back
Sub New()
MyBase.Layer = "layer back"
End Sub
End Class
Public Class Front
Inherits General_cmd
' ici le programme appelant doit passer et valider la variable mylayer=layer front
Sub New()
MyBase.Layer = "layer front"
End Sub
End Class
Public Class General_cmd
Public cstage As New STAGE
Public cdirector As New DIRECTOR
Protected Friend Property Layer() As String ' propriété non vu par le programm Form1 mais vu par les classe de l'assembly -- Protected Friend
Private Sub SendCommand(ByRef thecommand As String)
' ici une procédure qui génére qlq chose MAIS avec layer qui vient soit de la class Back ou Front et donc une valeur différente
MsgBox(thecommand & Layer)
End Sub
Public Sub testlayer()
Dim thecommand As String = "envoi d'un text issue de General_cmd"
SendCommand(thecommand)
End Sub
Public Class STAGE
Public Sub StageStart()
Dim Send As New General_cmd
Dim thecommand As String
thecommand = "envoi d'un text issue de STAGE"
Send.SendCommand(thecommand)
End Sub
End Class
Public Class DIRECTOR
Public Sub DirectorStart()
Dim Send As New General_cmd
Dim thecommand As String
thecommand = "envoi d'un text issue de DIRECTOR"
Send.SendCommand(thecommand)
End Sub
End Class
End Class |
Merci de votre aide.
Patrick