Пример #1
0
      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);
      }