Je me demandais s'il est possible d'avoir des types dépendants dans VB.Net 4, ou alternativement, s'il est possible de construire des objets hérités basés sur le(s) paramètre(s) du constructeur de la classe de base. Par exemple,
Class BaseClass
Sub New(type as String)
If type = "One" then
Me = New Child1 'Assignment to Me is syntax error, but it explains the concept...
Else
Me = New OtherChild
End If
End Sub
End Class
Class Child1
Inherits BaseClass
...
Class OtherChild
Inherits BaseClass
..
..
Sub Main()
Dim c1 As New BaseClass("One")
Dim c2 As New BaseClass("Two")
OverloadedMethod(c1) 'Outputs One
OverloadedMethod(c2) 'Outputs Two
End Sub
Sub OverloadedMethod(C as Class1)
Console.Write("One")
End Sub
Sub OverloadedMethod(C as OtherClass)
Console.Write("Two")
End Sub
EDIT : Explications sur les types dépendants :
Types de dépendance sont des types qui sont construits à partir de certains paramètres (par exemple, une valeur scalaire). C'est un concept bien connu dans certains langages de programmation (principalement fonctionnels) (par exemple Haskell). Par exemple, dans un hypothétique langage impératif qui supporte les types dépendants, on peut écrire :
Matrix(3,10) A; //A is a 10x10x10 3D Matrix
Matrix(2,3) B; //B is a 3x3 2D Matrix
Et puis
A(0,0,0) = 10;
B(0,0) = -2;
B(1,1,0) = 5; // Type Error