Une structure déclaré dans deux class et envoyer "ByRef" de l'une à l'autre les
narfight
Messages postés129Date d'inscriptionlundi 17 mars 2003StatutMembreDernière intervention 4 mars 2010
-
24 nov. 2008 à 14:22
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
24 nov. 2008 à 16:44
Bonjour,
Je cherche le moyen d'isoler une classe pour l'inclure dans plusieurs projet. Je sais que dans chaque projets, j'aurais une structure bien particulière où ma classe ira chercher mes données.
J'ai donc voulut déclarer cette structure dans la classe à isoler et la lier par un ByRef dans le constructeur mais que je le définisse comme Object puis en faisant un CType ou que je force directement dans le bon format sans passer par le type "Object", Il n'arrive pas à faire le casting.
Pouvez-vous me si c'est possible de faire ainsi ou si il a une meuilleur solution ?
Merci beaucoup,
Jean-Pierre
Exemple actuel :
Public Sub New(ByRef Str_Vars As Object)
Vars_Int = CType(Str_Vars, Dictionary(Of String, str_Varsa))
End Sub
A voir également:
Une structure déclaré dans deux class et envoyer "ByRef" de l'une à l'autre les
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 24 nov. 2008 à 16:44
Salut,
C'est quoi ta structure bien particulière?
Dans ton exemple tu fais un cast Object => Dictionary, il faut donc que ton Object soit créé par le constructeur de Dictionary, qui d'ailleurs n'est pas une structure mais une classe.
Pour éviter de faire un cast dans un Try-Catch, tu peux tester le type de ton Object avec GetType:
Private Structure struct1
Dim value As String
End Structure
Private Structure struct2
Dim value As Single
End Structure
Private Sub TestStruct(ByVal Struct As Object)
If Struct.GetType Is GetType(struct1) Then Console.WriteLine("Il s'agit d'une struct1")
ElseIf Struct.GetType Is GetType(struct2) Then Console.WriteLine("Il s'agit d'une struct2")
Else
Console.WriteLine("Type inconnu")
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim val1 As New struct1
Dim val2 As New struct2
Dim val3 As New Color
TestStruct(val1)
TestStruct(val2)
TestStruct(val3)
End Sub
Affiche:
Il s'agit d'une struct1
Il s'agit d'une struct2
Type inconnu