public DataObjectValue(String value)
			: this()
		{
			_referenceTypeValue = value;
			_type = DataObjectValueType.String;
			if (value == null)
				return;

			if (Boolean.TrueString.Equals(value, StringComparison.OrdinalIgnoreCase))
			{
				_booleanValue = true;
				_type |= DataObjectValueType.Boolean;
				return;
			}

			if (Boolean.FalseString.Equals(value, StringComparison.OrdinalIgnoreCase))
			{
				_booleanValue = false;
				_type |= DataObjectValueType.Boolean;
				return;
			}

			Int32 parsedIntegerValue;
			if (Int32.TryParse(value, out parsedIntegerValue))
			{
				_intValue = parsedIntegerValue;
				_type |= DataObjectValueType.Integer;
				return;
			}

			Single parsedSingleValue;
			if (Single.TryParse(value, out parsedSingleValue))
			{
				_singleValue = parsedSingleValue;
				_type |= DataObjectValueType.Float;
				return;
			}

			_intValue = value.Length; // store lenght
		}
		public DataObjectValue(Single value)
			: this()
		{
			_singleValue = value;
			_type = DataObjectValueType.Float;
		}
		private readonly Object _referenceTypeValue; // size 4 or 8 bytes

		#endregion

		#region Constructors

		public DataObjectValue(Boolean value)
			: this()
		{
			_booleanValue = value;
			_type = DataObjectValueType.Boolean;
		}
		public DataObjectValue(Int32 value)
			: this()
		{
			_intValue = value;
			_type = DataObjectValueType.Integer;
		}
		public DataObjectValue(Object value)
			: this()
		{
			_referenceTypeValue = value;
			_type = DataObjectValueType.Object;
		}