Это действительно беспокоит меня и препятствует моей разработке/отладке. Всякий раз, когда я объявляю переменный тип интерфейса, который я реализую, окно Locals не показывает его значения свойств. Вместо этого он просто читает
Объект не поддерживает это свойство или метод
Это глупо, потому что это абсолютно так. На самом деле он имеет, чтобы выполнить свой контракт с интерфейсом.
Если я объявляю переменную как конкретную реализацию интерфейса, окно работает так, как ожидалось. Тем не менее, это полностью поражает цель кодирования для абстракции для начала.
Как я могу заставить окно locals правильно отображать значения свойств класса?
Минимальный, полный и проверяемый пример:
Создайте класс IClass
для использования в качестве интерфейса.
Option Explicit
Public Property Get Name() As String
End Property
Создайте Class1
, который реализует интерфейс.
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
И, наконец, некоторый тестовый код в регулярном .bas-модуле, чтобы проиллюстрировать проблему.
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