[VB.NET 2.0] Extension à List(Of T)
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:
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:
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:
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....