动态选择活动命名空间

时间:2013-01-29 21:03:35

标签: vb.net

首先,我不确定我计划的方式(并将在下面描述)必然是“最佳”方式,所以我愿意接受建议。我有一个应用程序,我需要添加在运行时从硬件监视器收集信息的功能。我需要以可扩展的方式构建这个通信框架,以便我可以使用不同的通信协议支持多个不同的监视器。

我的计划是为每个不同的监视器编写一个类,每个监视器都将实现相同的方法。它看起来如下所示:

Monitor1.vb:

Public Function GetHR() as integer
    //Code specific to interact with Monitor 1
    return HR as integer
End Function

Monitor2.vb:

Public Function GetHR() as integer
    //Code specific to interact with Monitor 2
    return HR as integer
End Function

然后我会在实现页面上选择活动监视器并调用该函数 Implementation.vb:

ActiveMon = Monitor1
CurrentHR = ActiveMon.GetHR()

如果这是设置活动类的可接受方法,我将如何设置它(我猜我上面的简单设置变量的例子不是正确的方法)。如果这不是最好的方法,我应该怎么做?

1 个答案:

答案 0 :(得分:2)

通常对于这种类型的事情,您要么使用接口或继承。如果类有一些共同的共享代码,继承将是更好的选择。如果只需要提供常用方法,界面就可以正常工作:

Interface IMonitor
    Function GetHR() as Integer
End Interface

Public Class Monitor1
    Implements IMonitor

    Public Function GetHR() as Integer Implements IMonitor.GetHR
        ' Do Stuff
        Return someValue
    End Function
End Class

Public Class Monitor2
    Implements IMonitor

    Public Function GetHR() as Integer Implements IMonitor.GetHR
        ' Do other Stuff
        Return someValue
    End Function
End Class

然后你可以有一个接口类型的变量并分配给它:

Dim myMonitor as IMonitor
myMonitor = new Monitor1()
Dim result = myMonitor.GetHR() ' Some result
myMonitor = new Monitor2()
result = myMonitor.GetHR()     ' Some other result