public bool SetValue(Type type, object value, uint address, bool absoluteAddress = false, uint?mask = null, int?shift = null) { if (value is string) { if (type == typeof(byte)) { value = ParsingUtilities.ParseByteNullable(value); } if (type == typeof(sbyte)) { value = ParsingUtilities.ParseSByteNullable(value); } if (type == typeof(short)) { value = ParsingUtilities.ParseShortNullable(value); } if (type == typeof(ushort)) { value = ParsingUtilities.ParseUShortNullable(value); } if (type == typeof(int)) { value = ParsingUtilities.ParseIntNullable(value); } if (type == typeof(uint)) { value = ParsingUtilities.ParseUIntNullable(value); } if (type == typeof(float)) { value = ParsingUtilities.ParseFloatNullable(value); } if (type == typeof(double)) { value = ParsingUtilities.ParseDoubleNullable(value); } } if (value == null) { return(false); } if (type == typeof(byte)) { return(SetValue((byte)value, address, absoluteAddress, mask, shift)); } if (type == typeof(sbyte)) { return(SetValue((sbyte)value, address, absoluteAddress, mask, shift)); } if (type == typeof(short)) { return(SetValue((short)value, address, absoluteAddress, mask, shift)); } if (type == typeof(ushort)) { return(SetValue((ushort)value, address, absoluteAddress, mask, shift)); } if (type == typeof(int)) { return(SetValue((int)value, address, absoluteAddress, mask, shift)); } if (type == typeof(uint)) { return(SetValue((uint)value, address, absoluteAddress, mask, shift)); } if (type == typeof(float)) { return(SetValue((float)value, address, absoluteAddress, mask, shift)); } if (type == typeof(double)) { return(SetValue((double)value, address, absoluteAddress, mask, shift)); } throw new ArgumentOutOfRangeException("Cannot call ProcessStream.SetValue with type " + type); }