To naprawdę przeszkadza mi i przeszkadza w rozwoju/debugowaniu. Ilekroć deklaruję typ zmiennej interfejsu, który implementuję, okno Locals nie pokazuje jego wartości właściwości. Zamiast po prostu czytaJak uzyskać wartości właściwości klas implementujących interfejs w oknie Locals?
Obiekt nie obsługuje tej właściwości lub metody
Która jest głupie, bo absolutnie nie. W rzeczywistości to ma, aby spełnić swoją umowę z interfejsem.
Jeśli zadeklaruję zmienną jako konkretną implementację interfejsu, okno działa zgodnie z oczekiwaniami. Jednak to całkowicie odrzuca cel kodowania do abstrakcji na początku.
Jak mogę uzyskać okno locals, aby poprawnie wyświetlać wartości właściwości klasy?
Minimal, kompletne i weryfikowalne Przykład:
Utwórz klasę IClass
do wykorzystania jako interfejs.
Option Explicit
Public Property Get Name() As String
End Property
Utwórz Class1
, który implementuje interfejs.
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
I wreszcie, niektóre kod testowy w zwykłym module .bas w celu zilustrowania problemu.
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
Funkcjonalną częścią jest to, że wciąż oczekuje się, że 'String' ... wygląda jak błąd w oknie locals! –
Prawdopodobnie najprostszym rozwiązaniem jest po prostu odtworzenie całego VBA IDE, znalezienie błędu Microsoftu, dostrojenie trochę kodu na poziomie zespołu, a następnie ... bingo, działającego okna Locals. – mwolfe02
W rzeczywistości odkryłem naprawdę cudowną implementację tego, co ten komentarz jest zbyt wąski, aby go powstrzymać. – mwolfe02