我在VB.Net中有一个情况,我有一个变量,它将是两个类之一的实例,它们都是从父类派生的,但是哪个类是在运行时确定的。为此,我将变量声明为父类,然后根据true / false值将其设置为一个或另一个子类。
之后,我为子类调用唯一的公共方法(Main),我希望它所使用的参数根据它所在的子类而不同。但是,我发现我不能用覆盖或重载做到这一点,至少我理解它们。有没有办法做到这一点?
我想我可以将Main1和Main2作为具有特定参数类型的继承方法,并有条件地调用它们,但只是想看看我是否可以保持简单。
这是我想要完成的一个模型,它不起作用:
Public Class ThisParam
End Class
Public Class Param1
Inherits ThisParam
End Class
Public Class Param2
Inherits ThisParam
End Class
Public Class ThisBase
Public Overridable Sub Main (X as ThisParam)
'Empty for inheritance
End Sub
End Class
Public Class Child1
Inherits ThisBase
Public Overrides Sub Main(X as Param1)
'Do Stuff
End Sub
End Class
Public Class Child2
Inherits ThisBase
Public Overrides Sub Main(X as Param2)
'Do Stuff
End Sub
End Class
Dim MyObject As ThisBase
Dim MyParam as ThisParam
If True then MyObject = New Child1 Else MyObject = New Child2 End If
If True then MyParam = New Param1 Else MyParam = New Param2 End If
MyObject.Main(MyParam)