在我的项目中,我有几个模块,都使用相同的Subs。我使用的每个模块用于不同品牌的RFID读卡器,因为访问方法和读卡器输出不同,但遵循完全相同的步骤。在我的应用程序中,我想对这些步骤进行泛型调用,但是有一个应用程序设置确定要从中调用它的模块,以防止必须将所有调用项目更改为项目。我想做点什么:
Public CARD_READER_MODULE As ModMTI 'Which doesn't work
然后
CARD_READER_MODULE.Connect()
... etc
或者有更好的方法吗?
答案 0 :(得分:5)
对于您所描述的设计,您应该使用接口来描述您要使用的方法,然后在每个类型的设备的新类中实现此接口。
例如,您的界面如下所示:
Public Interface IDevice
Sub Connect()
End Interface
然后为每个设备创建一个类,其中包含每个设备的特定实现:
Public Class DeviceType1
Implements IDevice
Public Sub Connect() Implements IDevice.Connect
'connect to this type of device here
End Sub
End Class
这种设计的优点在于您可以定义Type' IDevice'的变量。然后将其实例化为特定类型:
Dim dev As IDevice
dev = New DeviceType1
dev.Connect()
答案 1 :(得分:0)
我认为您应该尝试找到更好的方法来实现您想要做的事情。
我会为您的RFID阅读器创建public class
,在该课程中,您可以拥有与该特定阅读器相关的属性和功能。
Public class Readers
Public function sharedFunction()
End function
Public class Reader1
End Class
End class
如果您只想在不创建类(对象)实例的情况下访问函数,请执行I.E.共享代码,然后在您的课程中使用“共享”功能。
我会在我的类的构造函数中添加一个参数,告诉它我想要使用哪个读者(子类)。您的父类可以有许多子(reader)类,以及所有这些类都可以使用的一组共享函数。