/// <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)); } } }