コード例 #1
0
        protected object ReadVariableValue(ObjectReader reader)
        {
            object value = null;

            if (reader.ReadStartArray())
            {
                VariableTypeIdentifier varType = (VariableTypeIdentifier)reader.ReadValueAsInt32();
                switch (varType)
                {
                case VariableTypeIdentifier.BooleanType:
                    value = reader.ReadValueAsBoolean();
                    break;

                case VariableTypeIdentifier.ByteType:
                    value = (byte)reader.ReadValueAsInt32();
                    break;

                case VariableTypeIdentifier.Int32Type:
                    value = reader.ReadValueAsInt32();
                    break;

                case VariableTypeIdentifier.UInt32Type:
                    value = reader.ReadValueAsUInt32();
                    break;

                case VariableTypeIdentifier.Int64Type:
                    value = reader.ReadValueAsInt64();
                    break;

                case VariableTypeIdentifier.UInt64Type:
                    value = reader.ReadValueAsUInt64();
                    break;

                case VariableTypeIdentifier.SingleType:
                    value = reader.ReadValueAsSingle();
                    break;

                case VariableTypeIdentifier.DoubleType:
                    value = reader.ReadValueAsDouble();
                    break;

                case VariableTypeIdentifier.StringType:
                    // Currently limit strings to a maximum length of 255 octets
                    value = reader.ReadValueAsString(255);
                    break;

                case VariableTypeIdentifier.ByteArrayType:
                    // Currently limit byte arrays to a maximum length of 255 octets
                    value = reader.ReadValueAsBytes(255);
                    break;

                default:
                    throw new NotSupportedException();
                }

                reader.ReadEndArray();
            }

            return(value);
        }