Bonjour,

J'ai créé un objet_data(Of T) contenant un nom et une variable de type T (integer, float, string...)
A l'aide d'un ConcurrentDictionary, je recherche un objet depuis son nom.
Je parviens à le trouver mais pas à le caster convenablement

Pour expliquer, voici mon code est en rouge les lignes me posant problème :

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
   'ma classe de base
    Public MustInherit Class objet_data
        Public ReadOnly sName As String
 
        Protected Sub New(ByVal name As String)
            Me.sName = name
        End Sub
    End Class
 
    'Mon_objet_data mais avec une variable _obj_Value de type non connu (integer, string, float, double)
    Public Class objet_data(Of T) : Inherits objet_data
        Private _obj_Value As T
 
        Public Sub New(ByVal name As String)
            MyBase.New(name)
        End Sub
    End Class
 
#Region "Le référentiel de mes objets"
    Private Interface I_Object_Data_Repository ' Déclaration de mon interface
        Sub Add(Of T)(dataRef As objet_data(Of T)) ' Ajoute un objet DATA dans le referentiel (dictionnaire)
        Function [Get](Of T)(sName As String) As objet_data(Of T) ' Retourne un objet data trouvé depuis son nom et son type
        Function [Get](sName As String, type As Type) As objet_data  'Retourne un objet data(of T) trouvé depuis son nom seul
    End Interface
 
    Private Class Object_Data_Repository
        Implements I_Object_Data_Repository
 
        Protected ReadOnly Dictionnaire_de_Mes_objets_data As New ConcurrentDictionary(Of String, Object)()
 
        'Ajoute un objet DATA dans le referentiel (dictionnaire)
        Private Sub Add(Of T)(ByVal Current_objet_data As objet_data(Of T)) Implements I_Object_Data_Repository.Add
            Dictionnaire_de_Mes_objets_data.TryAdd(Current_objet_data.sName, Current_objet_data)
        End Sub
 
        'Retourne un objet data trouvé depuis son nom et son type
        Private Function Get_a_Objet_data(ByVal sName As String, type As Type) As objet_data Implements I_Object_Data_Repository.Get
            Dim my_searched_data As Object = Nothing
            Dictionnaire_de_Mes_objets_data.TryGetValue(sName, my_searched_data)
 
            Return TryCast(my_searched_data, objet_data)
        End Function
 
        'Retourne un objet data(of T) trouvé depuis son nom seul
        Private Function Get_a_Objet_data(Of T)(ByVal sName As String) As objet_data(Of T) Implements I_Object_Data_Repository.Get
            Dim my_searched_data As Object = Nothing
            Dictionnaire_de_Mes_objets_data.TryGetValue(sName, my_searched_data)
 
            'ICI my_searched_data a bien été trouvé
            'Par contre impossible de le caster en objet_data(Of T). Voici les deux tentatives :
            Return TryCast(my_searched_data, objet_data(Of T)) "==> return NOTHING"
            Return CType(my_searched_data, objet_data(Of T)) "==> génère une erreur Impossible d'effectuer un cast d'un objet de type 'objet_data`1[System.Single]' en type 'objet_data`1[System.Single[]]'."
        End Function
    End Class
#End Region
L'erreur indique que je tente de caster du single en tableau de single (single()) mais je ne comprend pas pourquoi.

Voyez-vous ce qui cloche ?

Merci pour votre aide

Dan

Avez-vous une idée du probléme