Library code snippets
Testing Visual Basic class interfaces
If you develop applications that use several versions of a component,
you might have read "Polymorphism, Interfaces, Type Libraries, and
GUIDs" in VB's Help file. Microsoft gives an example of how to test
whether an object supports a particular interface:Dim fnr As FinanceRules
Dim ifin As IFinance
Dim ifin2 As IFinance2
On Error Resume Next
Set fnr = New FinanceRules
' (Error handling code omitted.)
' Attempt to access the preferred interface.
Set ifin2 = fnr
If Err.Number <> 0 ThenIf Err.Number <> 0 Then
' Access the more limited interface.
Set ifin = fnr
' (Code to provide limited functionality,
' using the object variable ifin.)
Else
' (Code to provide full functionality,
' using the object variable ifin2.)
End If
As you can see, this example uses inline error handling to determine
whether a type-mismatch error occurs when setting ifin2 = fnr. If your
routine already has an active error handler, your code can become
cluttered with this solution--especially if you test for several
different interfaces in a single routine.
To make your code more readable, use:On Error Goto YourErrorHandler
Set fnr = New FinanceRules
' (Errors produced by previous line are handled
' in YourErrorHandler).
' Check to see if fnr supports the IFinance2 interface
If Not TypeOf fnr Is IFinance2 Then
' Access the more limited interface.
Set ifin = fnr
' (Code to provide limited functionality,
' using the object variable ifin.)
Else
set ifin2 = fnr
' (Code to provide full functionality,
' using the object variable ifin2.)
End If
Note that you can't use If TypeName(fnr) <> "IFinance2" Then
because TypeName() always returns the actual class name of the
instantiated object, not the interfaces it implements.
Related articles
Related discussion
-
VB6 Runtime error 381 subsript out of range Error
by Uncle (2 replies)
-
passing and reading parameters from using Shell
by jigartoliya (0 replies)
-
Convert C++ code to VB6
by mawcot (4 replies)
-
listbox scrollbar
by Dennijr (10 replies)
-
Can you describe Above simple VB6 code?
by pramodmca09 (0 replies)
Related podcasts
-
Agile Kaikaku
In this episode, I conclude my discussion with Owen Rogers on the topic of introducing an Agile Kaikaku, or a radical process change event within an organization. Owen is an Agile coach and has helped many teams adopt Agile practices.Bet you couldn't test without it… Click here to learn more!This...
Events coming up
-
Nov
27
Agile Specifications, Bdd And Testing Exchange
London, United Kingdom
Following the excellent response to our Agile Testing and BDD community events and courses during the last 10 months, Skills Matter is proud to organise the first, annual Agile Specification, BDD and Testing eXchange - an intensive and intimate event aimed at bringing together leading thinkers and passionate community members. The aim of this eXchange is to promote awareness and adoption of modern Agile Testing techniques and ideas.
This thread is for discussions of Testing Visual Basic class interfaces.