VB.net:创建多个派生类对象中的一个以响应用户请求

VB.net:创建多个派生类对象中的一个以响应用户请求,vb.net,polymorphism,Vb.net,Polymorphism,这似乎是一个非常容易回答的问题,但我似乎找不到任何明显的方法来回答 我有一个对象的基类,它有几个派生类,这里是ClassA和ClassB。我想从用户那里获取输入,创建一个由他们的响应决定类型的对象 但是我不能在Select Case中放一个Dim语句,因为block作用域会立即终止对象 我想要的是 选择案例输入 案例1 Dim OutputObject作为新的ClassA 案例2 Dim OutputObject作为新类B 结束选择 我一直觉得有一种明显的方法可以做到这一点,毕竟它对多态性的整个

这似乎是一个非常容易回答的问题,但我似乎找不到任何明显的方法来回答

我有一个对象的基类,它有几个派生类,这里是ClassA和ClassB。我想从用户那里获取输入,创建一个由他们的响应决定类型的对象

但是我不能在Select Case中放一个Dim语句,因为block作用域会立即终止对象

我想要的是

选择案例输入 案例1 Dim OutputObject作为新的ClassA 案例2 Dim OutputObject作为新类B 结束选择

我一直觉得有一种明显的方法可以做到这一点,毕竟它对多态性的整个概念似乎相当重要,但我似乎想不起来。看起来更像这样

Dim OutputObject as BaseClass

Select Case Input
Case 1
    OutputObject = New ClassA()
Case 2
    OutputObject = New ClassB()
End Select

返回基类的位置。

返回基类的一个对象,并将其分别设置为类A或类B的构造。查看WebRequest.Create方法以了解您正尝试执行的操作的示例。它的返回类型是WebRequest,但实际返回的对象是基于传入的URL协议的派生类型。由调用方将该结果转换为适当的类型。根据您所做工作的细节,使用返回接口而不是基类可能更有意义。我肯定会研究接口的概念-我以前从未听说过它们,它们可能对我非常有用。由于VB.net不支持多重继承。我最初将基类设置为MustInherit,但我删除了它,这非常有效!尽管我不得不添加更多的保护代码来防止无意中使用基类。Thanks@EdmundIreland这可能是使用界面的一个原因。实现干涉波的基类和此工厂方法将返回接口。