Ejemplo n.º 1
0
        public override string ToString()
        {
            var type = Value != null?Value.GetType() : typeof(Element);

            var inner_type = Datamodel.GetArrayInnerType(type);

            return(String.Format("{0} <{1}>", Name, inner_type != null ? inner_type.FullName + "[]" : type.FullName));
        }
Ejemplo n.º 2
0
        public new bool Equals(object x, object y)
        {
            var type_x = x == null ? null : x.GetType();
            var type_y = y == null ? null : y.GetType();

            if (type_x == null && type_y == null)
            {
                return(true);
            }

            if (type_x != type_y)
            {
                return(false);
            }

            var inner = Datamodel.GetArrayInnerType(type_x);

            if (inner != null)
            {
                var array_left  = (IList)x;
                var array_right = (IList)y;

                if (array_left.Count != array_right.Count)
                {
                    return(false);
                }

                return(!Enumerable.Range(0, array_left.Count).Any(i => !Equals(array_left[i], array_right[i])));
            }
            else if (type_x == typeof(Element))
            {
                return(Element.IDComparer.Default.Equals((Element)x, (Element)y));
            }
            else
            {
                return(EqualityComparer <object> .Default.Equals(x, y));
            }
        }
Ejemplo n.º 3
0
        public int GetHashCode(object obj)
        {
            var elem = obj as Element;

            if (elem != null)
            {
                return(elem.ID.GetHashCode());
            }

            var inner = Datamodel.GetArrayInnerType(obj.GetType());

            if (inner != null)
            {
                int hash = 0;
                foreach (var item in (IList)obj)
                {
                    hash ^= item.GetHashCode();
                }
                return(hash);
            }

            return(obj.GetHashCode());
        }