Generation of Temporary Types for SEQUENCE OF Elements

As with other constructed types, the <type> variable can reference any ASN.1 type, including other ASN.1 constructed types. Therefore, it is possible to have a SEQUENCE OF SEQUENCE, SEQUENCE OF CHOICE, etc.

When a constructed type is referenced, a temporary type is generated for use in the final production. The format of this temporary type name is as follows:

   <prodName>_element

In this definition, <prodName> refers to the name of the production containing the SEQUENCE OF type.

For example, a simple (and very common) single level nested SEQUENCE OF construct might be as follows:

   A ::= SEQUENCE OF SEQUENCE { INTEGER a, BOOLEAN b }

In this case, a temporary type is generated for the element of the SEQUENCE OF construct. This results in the following two equivalent ASN.1 types:

   A-element ::= SEQUENCE { INTEGER a, BOOLEAN b }

   A ::= SEQUENCE OF A-element

These types are then converted into the equivalent C# classes using the standard mapping that was previously described.