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 :
L'erreur indique que je tente de caster du single en tableau de single (single()) mais je ne comprend pas pourquoi.
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
Voyez-vous ce qui cloche ?
Merci pour votre aide
Dan
Avez-vous une idée du probléme
Partager