Пример #1
0
        /// <summary>
        /// Выполняет сравнение сначала по тексту сообщения, потом по типу, потом по теме
        /// Позволяет сравнивать так же null - объекты и объекты, содержащие null - поля
        /// </summary>
        public int CompareTo(object obj)
        {
            if ((object)this == null && obj == null)
            {
                return(0);
            }
            if (obj == null)
            {
                return(1);
            }
            if (!(obj is Category))
            {
                throw new ArgumentException();
            }
            if ((object)this == null)
            {
                return(-1);
            }
            sbyte compareResult = 0;

            if ((MessageText == null) != (((Category)obj).MessageText == null))
            {
                return(((Category)obj).MessageText == null ? 1 : -1);
            }
            else if (MessageText != null)
            {
                compareResult = (sbyte)MessageText.CompareTo(((Category)obj).MessageText);
            }
            if (compareResult != 0)
            {
                return(compareResult);
            }
            else
            {
                compareResult = (sbyte)MessageType.CompareTo(((Category)obj).MessageType);
                if (compareResult != 0)
                {
                    return(compareResult);
                }
                else
                {
                    return(MessageTopic.CompareTo(((Category)obj).MessageTopic));
                }
            }
        }