Progress KB - How to dynamically instantiate classes and invoke methods on them ?

Did this article resolve your question/issue?



How to dynamically instantiate classes and invoke methods on them ?

« Go Back


TitleHow to dynamically instantiate classes and invoke methods on them ?
URL Name000031227
Article Number000172309
EnvironmentOpenEdge 10.2B
OpenEdge 11.0
All supported operating systems
Question/Problem Description
In some use cases (for example in factory classes that can create different types of class instances), it's desirable to invoke a standard method name, based on only an object type name.

How to achieve this ?
Steps to Reproduce
Clarifying Information
Error Message
Defect/Enhancement Number
An easy way to achieve this is by implementing the following steps:

1. Make sure all classes that can be instantiated share a common type, for example by inheriting from the same base class or implementing the same interface.

2. Make sure the method name to invoke is defined in this common type.

3. Define a variable of this common type.

4, Use the DYNAMIC-NEW () function to instantiate the actual instances, and store the references in the variable.

5. Invoke the standard method names from the variable.

Attached .zip file contains a simplified testcase showing this pattern.
Last Modified Date9/13/2015 5:33 AM
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.