Explicit data type mapping from ABL primitive to .NET types
- Last Updated: February 11, 2026
- 2 minute read
- OpenEdge
- Version 13.0
- Documentation
Sometimes, when you assign or pass an ABL primitive type to a .NET property or when you
pass an ABL primitive type to a .NET method parameter, and more than one .NET type mapping
is possible, you must explicitly indicate the mapping you want. You might also need to
indicate the explicit .NET type when you assign (and box) an ABL primitive type to a
System.Object or when you pass the ABL primitive as an argument to a
System.Object or overloaded .NET method parameter. You must indicate
explicit .NET data types when you define an ABL method or property in order to override a
.NET method or implement a .NET interface (see the C# .NET code mapped to OpenEdge GUI for .NET ABL C# .NET code mapped to OpenEdge GUI for
.NET ABL
For
a .NET mapped type that is the default or only match for a
given ABL data type, you only use the ABL data type to explicitly
indicate the .NET type mapping. For all other .NET mapped
types, ABL provides a special type keyword (ABL AS data
type) that indicates the explicit .NET type mapping. The following
table shows all the mappings between ABL and .NET primitive
types as well as the AS data type keyword that
you can use to indicate the explicit mapping to a .NET type
other than the default match for the ABL primitive type.
| Explicit .NETobject type | Explicit C#primitive type | ABLprimitive type | ABLAS data type |
|---|---|---|---|
System.Boolean
|
bool
|
LOGICAL
|
— |
System.Byte
|
byte
|
INTEGER
|
UNSIGNED-BYTE
|
System.SByte
|
sbyte
|
INTEGER
|
BYTE
|
System.DateTime
|
— |
DATETIME
|
— |
System.Decimal
|
decimal
|
DECIMAL
|
— |
System.Int16
|
short
|
INTEGER
|
SHORT
|
System.UInt16
|
ushort
|
INTEGER
|
UNSIGNED-SHORT
|
System.Int32
|
int
|
INTEGER
|
— |
System.UInt32
|
uint
|
INT64
|
UNSIGNED-INTEGER
|
System.Int64
|
long
|
INT64
|
— |
System.UInt64
|
ulong
|
DECIMAL
|
UNSIGNED-INT64
|
System.Double
|
double
|
DECIMAL
|
DOUBLE
|
System.Single
|
float
|
DECIMAL
|
FLOAT
|
System.Char
|
char
|
CHARACTER
|
SINGLE-CHARACTER
|
System.String
|
string
|
CHARACTER/ LONGCHAR
|
— |
The following table shows examples of an explicit .NET type
mapping using the AS data type keyword.
| Operation description | Operation with Type of data element |
|---|---|
Assign an INTEGER as a System.Int16 value
to a System.Object property or variable (creating
a new System.Int16 object in the process). |
System.Object = BOX(
INTEGER, "SHORT"). |
Pass an INTEGER as a System.Int16 argument
to the System.Object parameter of a .NET method
(creating a new System.Int16 object in the process). |
Method( INPUT INTEGER
AS SHORT ). |