VB.Net Make Inherited Overridable Method采用不同的参数

时间:2014-08-22 16:46:38

标签: vb.net inheritance

我在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)  

0 个答案:

没有答案