VB.Net 4で従属型を持つことが可能かどうか、または基本クラスのコンストラクタのパラメータに基づいて継承されたオブジェクトを構築できるかどうかは疑問でした。例えば、VB.NETの従属型
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:依存型について説明:
Dependent typesは、いくつかのパラメータ(例えばスカラー値)に基づいて構築されているタイプです。これは、一部の(主に機能的な)プログラミング言語(例えば、Haskell)におけるよく知られた概念である。 例えば、依存タイプをサポートして仮想的な命令型言語では、1は書くことができます。
Matrix(3,10) A; //A is a 10x10x10 3D Matrix
Matrix(2,3) B; //B is a 3x3 2D Matrix
そして
A(0,0,0) = 10;
B(0,0) = -2;
B(1,1,0) = 5; // Type Error