有没有办法为VBA中的一组类设置一组通用属性?

Har*_*don 4 polymorphism vba interface

我正在研究中的一个项目,其中有许多类用于查询来自各种来源的数据.由于这些类是相似的,我试图确定是否使用公共接口并使用该Implements语句对我来说是一个可行的选项.我对OOP一般都是新手(尽管我试图用非VBA语言学习),而且我知道VBA中的OOP还有很多不足之处.

我一直在阅读的信息基本上表明你设置了我们将要调用的接口类IBaseInfo:

Public Property Let LocationData(ByRef locDATA As udtLocData)
End Property

Public Property Let ReferenceDate(ByVal dteDATE As Date)
End Property
Run Code Online (Sandbox Code Playgroud)

然后你实际IBaseInfo在你的课程中实现,我们将调用clsRate5pt:

Implements IBaseInfo

Private Property Let IBaseInfo_LocationData(Byref RHS As udtLocData)

End Property

Private Property Let IBaseInfo_ReferenceDate(ByVal RHS As Date)

End Property
Run Code Online (Sandbox Code Playgroud)

我感到困惑的是我如何从模块中的对象级别实际访问属性.我从msdn上的VBA多态性的引用得到的是我需要实际声明一个类型的变量IBaseInfo,将它设置为类型的对象clsRate5pt并通过该变量访问属性.如:

Sub TestIFace()

    Dim o5PT As clsRate5Pt
    Dim oInfo As IBaseInfo

    Set o5PT = New clsRate5Pt
    Set oInfo = o5PT

    oInfo.LocationData = '// Some location Data
    oInfo.ReferenceDate = '// Some Reference Date

End Sub
Run Code Online (Sandbox Code Playgroud)

有没有办法为一组类设置一组通用接口?是Implements走的路,如果是的话,我做错了什么?

通过不同的对象访问属性似乎是违反直觉的.如果clsRate5pt是"实现"接口,是不是应该有办法通过访问这些属性clsRate5pt

Tim*_*ams 5

VBA不支持继承("是一个")但支持组合("有一个"),所以你可以在这种情况下使用这种方法:

例如:类"clsSettings"具有公共属性以及要在其他类中实现的任何必需属性值检查.

然后,您的其他类具有"设置"的实例,可以将其公开为:

objRate5pct.Settings.LocationData
objRate5pct.Settings.ReferenceDate
Run Code Online (Sandbox Code Playgroud)