Opc.Ua.XmlDecoder.ReadEnumeratedArray C# (CSharp) Method

ReadEnumeratedArray() public method

Reads an enumerated value array from the stream.
public ReadEnumeratedArray ( string fieldName, System enumType ) : Array
fieldName string
enumType System
return System.Array
        public Array ReadEnumeratedArray(string fieldName, System.Type enumType)
        {
            if (enumType == null) throw new ArgumentNullException("enumType");
            
            bool isNil = false;

            List<Enum> enums = new List<Enum>();
                                    
            if (BeginField(fieldName, true, out isNil))
            {                           
                XmlQualifiedName xmlName = EncodeableFactory.GetXmlName(enumType);     
                PushNamespace(xmlName.Namespace);
                
                while (MoveToElement(xmlName.Name))
                {
                    enums.Add(ReadEnumerated(xmlName.Name, enumType));
                }
                
                // check the length.
                if (m_context.MaxArrayLength > 0 && m_context.MaxArrayLength < enums.Count)
                {
                    throw new ServiceResultException(StatusCodes.BadEncodingLimitsExceeded);
                }

                PopNamespace();
                EndField(fieldName);
                                
                Array values = Array.CreateInstance(enumType, enums.Count);

                for (int ii = 0; ii < enums.Count; ii++)
                {
                    values.SetValue(enums[ii], ii);
                }

                return values;
            }

            if (isNil)
            {
                return null;
            }

            return Array.CreateInstance(enumType, 0);
        }
        #endregion