NGWS SDK Documentation  

This is preliminary documentation and subject to change.
To comment on this topic, please send us email at ngwssdk@microsoft.com. Thanks!

Non-Isomorphic Types

Non-Isomorphic have different or sometimes ambiguous representations in the managed and unmanaged worlds. These types are considered Non-Isomorphic because they may require conversion when marshaled between managed and unmanaged code. For example, managed strings are non-isomorphic types because they can have several different unmanaged representations, some of which may require conversion. Table 3 shows the complete list of non-isomorphic element types supported by the runtime along with the respective language types used to represent those element types in VB, MC++ and C#. Section 5 of this document describes how to use the MarshalAs attribute to control the marshaling behavior for non-isomorphic types.

Isomorphic Types VB MC++ C#
ELEMENT_TYPE_BOOLEAN Boolean Bool Bool
ELEMENT_TYPE_CHAR      
ELEMENT_TYPE_STRING String String String
ELEMENT_TYPE_OBJECT      
ELEMENT_TYPE_CLASS Class Class Class
ELEMENT_TYPE_VALUETYPE UDT [value] class struct
ELEMENT_TYPE_ARRAY      
ELEMENT_TYPE_SZARRAY      

Table 3. Non-Isomorphic element types and their respective language representation