This is really bothering me and hindering my development/debugging. Whenever I declare a variable type of the interface I'm implementing, the Locals Window doesn't show it's property values. Instead it just reads
Object doesn't support this property or method
Which is silly, because it absolutely does. In fact it has to in order to fulfill its contract with the Interface.
If I declare the variable as the concrete implementation of the interface, the window works as expected. However, that completely defeats the purpose of coding to the abstraction to begin with.
How can I get the locals window to properly display the class' property values?
Minimal, Complete, and Verifiable Example:
Create an IClass
class to use as an interface.
Option Explicit
Public Property Get Name() As String
End Property
Create a Class1
that implements the interface.
Option Explicit
Implements IClass
Public Property Get Name() As String
Name = "Class1"
End Property
Private Property Get IClass_Name() As String
IClass_Name = Name
End Property
And lastly, some test code in a regular .bas module to illustrate the issue.
Option Explicit
Public Sub test()
Dim x As Class1
Dim y As IClass
Set x = New Class1
Debug.Print x.Name
Set y = New Class1
Debug.Print y.Name
Stop
End Sub
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…