I'm trying to whip up a Labview VI to interface to some existing VB ActiveX servers.
The problem is that my servers use a class factory approach. For example: say I have three visual basic classes like this
' class base
public sub aMethod .... end sub
' class derived
private base_aMethod .... ' my implementation of aMethod end sub
public MySpecialMethod ' method available only though a reference to class derived end sub
' class factory
public function MakeInterface ( byval iType as integer ) as based
select case iType case 0: set MakeInterface = new base case 1: set MakeInterface = new Derived ' and so on end select end function
Now, in vb I might write:
dim f as new fac tory dim b1 as base dim b2 as base dim d as derived
set b1 = f.MakeInterface(0) ' returns an object of type Base set b2 = f.MakeInterface(1) ' returns an object of type Derived set d = f.MakeInterface(1) ' also returns an object of type Derived
b1.aMethod ' legal b2.aMethod ' also legal (calls the implementation in derived) d.aMethod ' illegal (aMethod only available through base interface d.MySpecialMethod ' legal b2.MySpecialMethod ' will probably work due to late binding.
The problem I have is using the above approach in Labview. I call MakeInterface with no problems and the Automation refnum returned is for an object of type Base.
But, given that I provide a parameter of 1 to MakeInterface, I can't find a way to get at "derived.MySpecialMethod".
How can I cast a reference to base into a reference to derived? This is especially important as I need to handle activex events which are specific to the derived class!
Sent via D eja.com http://www.deja.com/ Before you buy.