public override bool Equals(object obj) { NumberJsonValue secondJsonValue = obj as NumberJsonValue; if (secondJsonValue == null) { return(false); } switch (_actualType) { case TypeCode.Int16: case TypeCode.Int32: case TypeCode.Int64: case TypeCode.Byte: case TypeCode.SByte: case TypeCode.UInt16: case TypeCode.UInt32: case TypeCode.UInt64: return(Convert.ToInt64(_value).Equals(Convert.ToInt64(secondJsonValue.Value))); default: return(Convert.ToDouble(_value).Equals(Convert.ToDouble(secondJsonValue.Value))); } }
public override bool Equals(object obj) { var jsonValue = obj as ArrayJsonValue; if (jsonValue == null) { return(false); } var secondList = jsonValue.WrapedValue as IJsonValue[]; if (secondList == null && _value == null) { return(true); } if (_value == null || secondList == null) { return(false); } if (secondList.Length != _value.Length) { return(false); } for (int i = 0; i < _value.Length; i++) { FieldDataType jsonType1 = _value[i].DataType; FieldDataType jsonType2 = secondList[i].DataType; if (jsonType1 != jsonType2) { return(false); } switch (jsonType1) { case FieldDataType.Array: var firstArray = new ArrayJsonValue(_value[i].Value as IJsonValue[]); var secondArray = new ArrayJsonValue(secondList[i].Value as IJsonValue[]); if (!firstArray.Equals(secondArray)) { return(false); } break; case FieldDataType.Bool: var firstBool = (bool)_value[i].Value; var secondBool = (bool)secondList[i].Value; if (!firstBool.Equals(secondBool)) { return(false); } break; case FieldDataType.DateTime: var firstDateTime = (DateTime)_value[i].Value; var secondDateTime = (DateTime)secondList[i].Value; if (!firstDateTime.Equals(secondDateTime)) { return(false); } break; case FieldDataType.Null: break; case FieldDataType.Number: var firstNumber = new NumberJsonValue(_value[i].Value); var secondNumber = new NumberJsonValue(secondList[i].Value); if (!firstNumber.Equals(secondNumber)) { return(false); } break; case FieldDataType.Object: var firstDocument = (IJSONDocument)_value[i].Value; var secondDocument = (IJSONDocument)secondList[i].Value; if (!firstDocument.Equals(secondDocument)) { return(false); } break; case FieldDataType.String: var firstString = (string)_value[i].Value; var secondString = (string)secondList[i].Value; if (!firstString.Equals(secondString)) { return(false); } break; } } return(true); }