Une structure déclaré dans deux class et envoyer "ByRef" de l'une à l'autre les

narfight Messages postés 129 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 4 mars 2010 - 24 nov. 2008 à 14:22
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Derniè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:

1 réponse

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
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
0
Rejoignez-nous