函数重载基于接口继承

时间:2015-11-12 13:59:16

标签: vb.net interface overloading

假设我有一个基本界面,另一个继承自它:

Public Interface Parent
    {stuff}
End Interface

Public Interface Child
    Inherits Parent
    {other stuff}
End Interface

我也有一个sub及其重载:

Public Sub doStuff(parameter As Parent)
     {do some stuff}
End Sub 

Public Sub doStuff(parameter As Child)
     {do some other stuff}
End Sub 

如果我像这样调用子,它会调用“子函数”:

Dim myParam As Child = New SomeClassImplementingChild
doStuff(myParam)

但是,有没有办法让它用这样的东西调用“子函数”,假设我在编译时不知道coolParameter的类型:

Public Sub coolFunction(coolParameter As Parent)
    doStuff(coolParameter)
End Sub 

Dim myParam As Child = New SomeClassImplementingChild
coolFunction(myParam)

1 个答案:

答案 0 :(得分:0)

我找到了一种解决方法,我想我最接近解决方案的是

doStuff(Convert.ChangeType(coolParameter, coolParameter.GetType))

那将转换为"真实"在运行时键入,有效地调用正确的函数。但是,所有函数都必须公开才能被称为