예제 #1
0
파일: Serializer.cs 프로젝트: uvbs/babbot
        public void MergeWith(object obj)
        {
            if (!MergeHelper.IsMergeable(this, obj))
            {
                return;
            }

            CommonTable <T> t = (CommonTable <T>)obj;

            // Check values
            foreach (KeyValuePair <string, T> item in t.Table)
            {
                if (!_htable.ContainsKey(item.Key))
                {
                    Add(item.Value);
                }
                else
                {
                    T value = _htable[item.Key];
                    if (typeof(IMergeable).IsAssignableFrom(value.GetType()))
                    {
                        ((IMergeable)value).MergeWith(item.Value);
                    }
                }
            }
        }
예제 #2
0
파일: Serializer.cs 프로젝트: uvbs/babbot
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            CommonTable <T> t = (CommonTable <T>)obj;

            // Check size first
            if (_htable.Count != t.Count)
            {
                return(false);
            }

            // Check values
            foreach (KeyValuePair <string, T> item1 in _htable)
            {
                // Stupid exception if not found
                try {
                    T item2 = t[item1.Key];
                    if (!item1.Value.Equals(item2))
                    {
                        return(false);
                    }
                } catch {
                    return(false);
                }
            }

            // No differences found
            return(true);
        }