Questo mi disturba e ostacola il mio sviluppo/debugging. Ogni volta che dichiaro un tipo di variabile dell'interfaccia che sto implementando, la Finestra dei Locali non mostra i suoi valori di proprietà. Invece è solo recitaCome ottenere i valori di proprietà delle classi che implementano un'interfaccia nella finestra Locali?
oggetto non supporta questa proprietà o metodo
Che è sciocco, perché non fa assolutamente. In realtà è ha a per adempiere al suo contratto con l'interfaccia.
Se dichiaro la variabile come implementazione concreta dell'interfaccia, la finestra funziona come previsto. Tuttavia, ciò sconfigge completamente lo scopo della codifica per l'astrazione, per cominciare.
Come posso ottenere la finestra dei locali per visualizzare correttamente i valori delle proprietà della classe?
Minimal, completa, e verificabile Esempio:
creare una classe IClass
da utilizzare come interfaccia.
Option Explicit
Public Property Get Name() As String
End Property
Creare un Class1
che implementa l'interfaccia.
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
Infine, un codice di prova in un normale modulo .bas per illustrare il problema.
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
La parte funky è che sa ancora aspettarsi un 'String' ... sembra un bug nella finestra dei locali! –
Probabilmente la soluzione più semplice è quella di decodificare l'intero IDE VBA, trovare il bug di Microsoft, modificare un po 'di codice a livello di assembly e quindi ... bingo, una finestra dei locali di lavoro. – mwolfe02
In effetti, ho scoperto un'implementazione davvero meravigliosa di questo, che questo commento è troppo ristretto per contenere. – mwolfe02