kOS.Safe.Encapsulation.ScalarValue.Equals C# (CSharp) Method

Equals() public method

public Equals ( object obj ) : bool
obj object
return bool
        public override bool Equals(object obj)
        {
            if (obj == null) return false;
            Type compareType = typeof(ScalarValue);
            if (compareType.IsInstanceOfType(obj))
            {
                var val = obj as ScalarValue;
                if (IsInt && val.IsInt)
                {
                    return GetIntValue() == val.GetIntValue();
                }
                // ReSharper disable once CompareOfFloatsByEqualityOperator
                return GetDoubleValue() == val.GetDoubleValue();
            }
            else
            {
                const BindingFlags FLAGS = BindingFlags.ExactBinding | BindingFlags.Static | BindingFlags.Public;
                MethodInfo converter = typeof(ScalarValue).GetMethod("op_Implicit", FLAGS, null, new[] { obj.GetType() }, null);
                if (converter != null)
                {
                    var val = (ScalarValue)converter.Invoke(null, new[] { obj });
                    if (Value == val.Value) return true;
                }
            }
            return false;
        }