Try OpenEdge Now
skip to main content
GUI for .NET Programming
Using .NET data types in ABL : General ABL support for .NET types : Support for .NET object types
 

Support for .NET object types

Other than the small set of object types that ABL does not allow you to use, or the mapped object types that ABL accesses only as ABL primitive types, you can access all .NET object types directly in ABL. For more information on those object types you cannot use, see Limitations of support for .NET classes.
ABL thus supports direct access to the following .NET object types:
*Classes — Reference types that ABL views and manages like ABL classes, with support for additional features that are unique to .NET classes, such as inner (nested) classes (see Referencing and instantiating .NET classes and Accessing .NET class members). You can also define ABL classes that inherit from .NET classes (see Defining ABL-extended .NET objects).
*Interfaces — Reference types that ABL views and manages like ABL interfaces, with support for additional features that are unique to .NET interfaces, such as inner (nested) interfaces (see Referencing .NET class and interface types and Accessing members of .NET interfaces). You can also define ABL classes that implement .NET interfaces (see Defining ABL-extended .NET objects).
*Structures — Value types that ABL views and manages similar to .NET classes. Structure types correspond to certain user-defined aggregate types in .NET languages that are supported using syntax native to each .NET language. For example, C# and C++ use the struct keyword to begin a user-defined type definition that .NET implements as a structure type. All such native-language user-defined types are implemented as .NET structure types in the CLR, and all .NET structure types inherit from the .NET class, System.ValueType. Although .NET passes or assigns structure types by value, once you reference a structure in ABL, you can pass and assign object references to it like any other class instance. The only time a structure is passed or assigned by value within ABL is when you pass the object reference to a .NET method parameter or assign the object reference to or from a .NET object property, data member, or method return value. This can create some unique situations when exchanging structure values between the ABL and .NET context. For more information, see Support for .NET value types as objects.
*Enumerations — Value types that ABL views and manages similar to .NET classes, and that can represent any one of a particular enumerated subset of values from an underlying .NET mapped data type. Each value of that mapped data type subset is represented as a named member of an enumeration type. Each .NET language provides its own syntax to define and reference enumerations. All .NET enumerations inherit from the System.Enum structure, which inherits from the System.ValueType class. Like structures, ABL allows you to reference .NET enumerations as objects that .NET passes by value. For more information, see Accessing and using .NET enumeration types. Also like structures, you can encounter unique situations when exchanging enumeration object values between the ABL and .NET context. For more information, see Support for .NET value types as objects.
Note: ABL does not support a native ABL type that is similar to a .NET enumeration.