The Unknown value (?) is mapped to a null value for a .NET reference type (class); however, the .NET value types referenced by a .NET proxy (System.Boolean, System.Decimal, System.Int32, System.Int64, and System.DateTime) always have a default value, and the null value does not belong to the set of values they support. For each of these value types, OpenEdge provides two options for representing a null value:
A .NET nullable value type, which is a structure that can be set to a null value as well as to one of the values of a corresponding .NET value type.
An OpenEdge holder class, which is defined in the Progress.Open4GL namespace, and can be set to a null value as well as to one of the values of a corresponding .NET value type. This option is provided for backward compatibility in ProxyGen projects created using previous OpenEdge releases that do not support .NET nullable types.
You can select the option you want to represent the Unknown value (?) for parameters and user-defined function return values in ProxyGen using the Unknown Support options in the .NET Client Details of the Generate Proxies dialog box.
Note: For ProxyGen projects created in OpenEdge releases without support for nullable types (releases prior to OpenEdge 11.0), the project defaults to using holder classes to represent the Unknown value (?). For ProxyGen projects created in OpenEdge releases that support nullable types, the project defaults to using nullable types to represent the Unknown value (?).