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" ?
Merci de votre aide.
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
Patrick
Partager