in src/Azure.IIoT.OpcUa/src/Encoders/BaseAvroDecoder.cs [1023:1115]
protected Variant ReadScalar(string? fieldName, BuiltInType builtInType)
{
var value = new Variant();
switch (builtInType)
{
case BuiltInType.Null:
value.Value = ReadNull<object>(fieldName);
break;
case BuiltInType.Boolean:
value.Set(ReadBoolean(fieldName));
break;
case BuiltInType.SByte:
value.Set(ReadSByte(fieldName));
break;
case BuiltInType.Byte:
value.Set(ReadByte(fieldName));
break;
case BuiltInType.Int16:
value.Set(ReadInt16(fieldName));
break;
case BuiltInType.UInt16:
value.Set(ReadUInt16(fieldName));
break;
case BuiltInType.Int32:
value.Set(ReadInt32(fieldName));
break;
case BuiltInType.Enumeration:
value.Set(ReadEnumerated(fieldName));
break;
case BuiltInType.UInt32:
value.Set(ReadUInt32(fieldName));
break;
case BuiltInType.Int64:
value.Set(ReadInt64(fieldName));
break;
case BuiltInType.UInt64:
value.Set(ReadUInt64(fieldName));
break;
case BuiltInType.Float:
value.Set(ReadFloat(fieldName));
break;
case BuiltInType.Double:
value.Set(ReadDouble(fieldName));
break;
case BuiltInType.String:
value.Set(ReadString(fieldName));
break;
case BuiltInType.DateTime:
value.Set(ReadDateTime(fieldName));
break;
case BuiltInType.Guid:
value.Set(ReadGuid(fieldName));
break;
case BuiltInType.ByteString:
value.Set(ReadByteString(fieldName));
break;
case BuiltInType.XmlElement:
try
{
value.Set(ReadXmlElement(fieldName));
}
catch
{
value.Set(StatusCodes.BadDecodingError);
}
break;
case BuiltInType.NodeId:
value.Set(ReadNodeId(fieldName));
break;
case BuiltInType.ExpandedNodeId:
value.Set(ReadExpandedNodeId(fieldName));
break;
case BuiltInType.StatusCode:
value.Set(ReadStatusCode(fieldName));
break;
case BuiltInType.QualifiedName:
value.Set(ReadQualifiedName(fieldName));
break;
case BuiltInType.LocalizedText:
value.Set(ReadLocalizedText(fieldName));
break;
case BuiltInType.ExtensionObject:
value.Set(ReadExtensionObject(fieldName));
break;
case BuiltInType.DataValue:
value.Set(ReadDataValue(fieldName));
break;
default:
throw new DecodingException(
$"Cannot decode unknown type in Variant object (0x{builtInType:X2}).");
}
return value;
}