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.

Comments

  1. 01 Jan 1999 at 00:00

    This thread is for discussions of Testing Visual Basic class interfaces.

Leave a comment

Sign in or Join us (it's free).

AddThis

Related discussion

Related podcasts

  • Episode 23: Phil Haack on the ASP.NET MVC Beta Release (part 1)

    This is the first half of our interview with Phil Haack on the ASP.NET MVC Beta Release.&#10;Topics&#10;&#10;The MVC Elevator Speech&#10;MVC and Codebehind files&#10;How MVC differs from Webforms&#10;How MVC changes your development process&#10;The difficulty in unit testing UI&#10;What&rsquo;s t...