protected Variant ReadScalar()

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;
        }