In the coming Visual Studio 7, it is possible to create constructors in VB. One of the great benefits of using constructors is that they make it possible to control the initial state of a class. This is done by setting values in the Initialize event of the class. It would be preferable to control the states from outside the class with dynamic data, and this is possible in VB5 and 6, using this workaround.
Say you have a class CEmployee. Set the Instancing property of yourCEmployee to PublicNotCreatable. Add another class, CConstructor to the project, and set the Instancing property to GlobalMultiUse. In CConstructor, create a new function:
Public Function CreateNewCEmployee(Param1,Param2,Paramx) As CEmployee. Set CreateNewCEmployee = New CEmployee With CreateNewCEmployee .Property1 = Param1 .Property2 = Param2 .Propertyx = Paramx End WithEnd Function
The only way clients can instantiate CEmployee, is by calling CreateNewCEmployee. Setting CConstructor’s Instancing to GlobalMultiUse allows you to call its functions as if they were in a module (VB autoinstantiates Cconstructor when calling CreateNewCEmployee).
Note: Don’t go this way if you plan to use the class in MTS or COM+. VB performs an internal creation of the COM object bypassing the MTS runtime.