public void WriteEnumeratedArray(string fieldName, Array values, System.Type systemType)
{
if (BeginField(fieldName, values == null, true))
{
// check the length.
if (m_context.MaxArrayLength > 0 && m_context.MaxArrayLength < values.Length)
{
throw new ServiceResultException(StatusCodes.BadEncodingLimitsExceeded);
}
// get name for type being encoded.
XmlQualifiedName xmlName = EncodeableFactory.GetXmlName(systemType);
if (xmlName == null)
{
xmlName = new XmlQualifiedName("Enumerated", Namespaces.OpcUaXsd);
}
PushNamespace(xmlName.Namespace);
if (values != null)
{
// encode each element in the array.
foreach (Enum value in values)
{
WriteEnumerated(xmlName.Name, value);
}
}
PopNamespace();
EndField(fieldName);
}
}
#endregion