public void ToStringTestNonLegacy() { CriteriaOperator opa = new OperandValue() & new OperandValue(true) & 'q' & new DateTime(2006, 12, 02) & "q" & 1m & 1d & 1f & new OperandValue((byte)1) & new OperandValue((sbyte)1) & (short)1 & new OperandValue((ushort)1) & 1 & new OperandValue(1u) & 1L & new OperandValue(1uL) & Guid.Empty & TimeSpan.Zero; string tostr = opa.ToString(); Assert.AreEqual("? And True And 'q'c And #2006-12-02# And 'q' And 1.0m And 1.0 And 1.0f And 1b And 1sb And 1s And 1us And 1 And 1u And 1L And 1uL And {00000000-0000-0000-0000-000000000000} And #00:00:00#", tostr); Assert.AreEqual(opa, CriteriaOperator.Parse(tostr)); }
/// <summary> /// Преобразование указанного значения в строку формата Variant /// </summary> /// <param name="value">Значение</param> /// <returns>Строка, представляющее значение в формате Variant</returns> /// <exception cref="ArgumentException">Значение не поддерживает интерфейс IConvertible</exception> public static string ValueToString(object value) { if (value == null) return null; string typeString, valueString; if (value is IConvertible) { typeString = Type.GetTypeCode(value.GetType()).ToString(); valueString = Convert.ToString(value, CultureInfo.InvariantCulture); } else throw new ArgumentException(); object t = new OperandProperty(typeString); object v = new OperandValue(valueString); return string.Concat(t.ToString(), ":", v.ToString()); }