bonjour,

Bon, je sais pas trop comment expliquer ce que je veux, alors un exemple devrait faire.

Je veux d'abord une classe mustinherits d'objet qui contient des propriétés de base, par exemple:

Code vb.net : 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
Public MustInherits Class ItemListEx
Private _name as string
Private _number as Integer
Private _parent as ListEx(Of ItemListEx)
 
Public Property Name() as String
   Get/Set _name
 
Public ReadOnly Property Number() As Integer
   Get
       If _Parent IsNot Nothing then
          Return _Parent.IndexOf(Me) + 1
       Else :  Return -1 
       End If
   End Get
End PRoperty
End CLass

Et une collection contenant les ItemList pour laquelle il y aura des méthodes supplémentaire, par exemple:
Code vb.net : 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
 
Public MustInherit Class ListEx(Of T)
Inherits List(Of ItemListEx)
 
Public Function NameExists(name as string) as Boolean
   For each obj as ItemListEx in Me
        if obj.name = name then return true
   next obj
   return false
end Function
 
Public Function NameExists(name as string, excludedObject) as Boolean
  For each obj as ItemListEx in Me
      if obj Is excludedObject then
         Continue For
      else
          if obj.name = name then return true
      end if
  next obj
  return false
End function
End Class

À partir de ces deux classes, je veux en créer plusieurs, par exemple ceci:
Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
'collection typée basée sur ListEx
Public Class Betons
  Inherits ListEx(Beton)
End Class
 
Public Class Beton
  Inherits ItemListEx
  Private _density as Single
 
  Public Property Density
      Get/Set _density
End Class

Afin que les méthodes/propriétés de BETON soit accessible par l'objet Item de BETONS, sans faire de cast. Donc que .Density, .Number, .Name soit accessible à partir de Betons(Index)

Mais, ça ne fonctionne pas vraiment....