动态类声明选项

时间:2018-09-15 14:40:28

标签: vb.net

我正在尝试让用户根据用户输入选择变量不同的类。 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)

2 个答案:

答案 0 :(得分:1)

您希望Unit_AlphaUnit_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