私は、インターフェース、ジェネリックを使用し、実際の環境で継承を使用してそれらを開発することに慣れていますが、これを使用して、今後のプロジェクトの1つで新しいアーキテクチャに実装しようとしていますが、ジェネリックについて質問があります。
.NETでこれが許可されない理由が理解できないため、これは私にとっては教育的な質問です。
ジェネリッククラスがある場合(Of T As IA, T2 As A)
、次のインターフェイスと基本インターフェイスを実装するクラスがあります
Public Interface IA
Property A As String
End Interface
Public Interface IB
inherits IA
Property B As String
End Interface
Public Class GenericClass(Of T As IA, T2 As A)
'Should be list of IA?
Public list As New List(Of T)
Public Sub Add()
End Sub
End Class
私がT as IA
addメソッドでなぜDim foo4 As T = New A()
合法ではないのかを作ったので
Dim foo1 As IA = New A()
Dim foo2 As T
Dim foo3 = Activator.CreateInstance(Of T2)()
Dim x As IA = foo2
Dim y As IA = foo3
list.Add(x)
list.Add(y)
上記のすべては?これはジェネリック医薬品などの学習曲線になりつつありますが、論理的にこれができない理由と非常に混乱しています。
編集:申し訳ありませんが忘れClass A
てエラーメッセージは以下を参照してください
Public Class A
Implements IA
Public Property A As String Implements IA.A
End Class
編集2:エラーが間違って入力されました
「型クラスaの値をTに変換できません」