考虑以下情况:
Public Class Condition(Of T)
'...
End Class
现在,我用各种类型创建了这个类的几个实例。我现在希望用这些实例填充通用列表。类似的东西:
Dim Conditions As New List(Of Condition....?)
Conditions.add(new Condition(Of String))
Conditions.add(new Condition(Of Double))
Conditions.add(new Condition(Of CustomClass))
最好的方法是什么?现在我正在做以下事情:
Public Class Condition(Of T)
implements ICondition
'...
End Class
并像这样使用它:
Dim Conditions As New List(Of ICondition)
Conditions.add(new Condition(Of String))
Conditions.add(new Condition(Of Double))
Conditions.add(new Condition(Of CustomClass))
然而,ICondition完全是空的。这让我觉得可能有更好或更容易接受的方式。我也可以从一个空的基类继承,那会更好吗?做这种事的首选方法是什么?
据我所知,只要包含泛型的列表具有更广泛的类型,我就可以插入任何类型的条件。但是我不想让它更广泛 - 我只希望能够插入Public Class Condition(Of T)
实例的对象,但其类型可能会有所不同。
答案 0 :(得分:1)
答案有所不同,具体取决于您使用的.NET Framework版本。查找有关协方差和逆向的文章,以了解问题。 Here's an example.
.NET 4和4.5支持这种用法。
早期版本的.NET会让你使用类似你提到的ICondition
接口。