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 : Sélectionner tout - Visualiser dans une fenêtre à part
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