我正在尝试让用户根据用户输入选择变量不同的类。 Unit_Alpha和Unit_Beta是用户可以从中选择的两个不同类。这两个类都具有run()函数,该函数接受相同的输入和返回值,但是它们执行不同的计算。结果,我认为他们不可能是同一个班级。当我在选择的情况下调暗装置时,Visual Basic不喜欢它。有没有办法允许这种方法或替代方法?
谢谢。
Select Case unitsearch.Text
Case "Alpha"
Dim unit As New Unit_Alpha
Case "Beta"
Dim unit As New Unit_Beta
Case Else
MsgBox("no unit properly selected")
Exit sub
End Select
Answer = unit1.run(variables)
答案 0 :(得分:1)
您希望Unit_Alpha
和Unit_Beta
都实现相同的接口。我们称之为IUnit
:
Interface IUnit
Sub Run(variables As String) 'guessing at arguments here
End Interface
Public Class Unit_Alpha Implements IUnit
'...
End Class
Public Class Unit_Beta Implements IUnit
'...
End Class
然后您现有的代码将如下所示:
Dim unit As IUnit
Select Case unitsearch.Text
Case "Alpha"
unit = New Unit_Alpha
Case "Beta"
unit = New Unit_Beta
Case Else
MsgBox("no unit properly selected")
Exit sub
End Select
Answer = unit.Run(variables)
或者,如果您将Run()
成员方法替换为Func
委托,则可以将所有这些都放在一个类中。然后Select
块可以根据用户的选择更改委托。但这可能超出您所处的位置。
答案 1 :(得分:-1)
密切关注我提出的问题:
Dim unit As Object
Select Case unitsearch.Text
Case "Alpha"
Set unit = New Unit_Alpha
Case "Beta"
Set unit = New Unit_Beta
Case Else
MsgBox ("no unit properly selected")
Exit Sub
End Select