//============================================================ // ICOMPARABLE IMPLEMENTATION //============================================================ #region CompareTo(object obj) /// <summary> /// Compares the current instance with another object of the same type. /// </summary> /// <param name="obj">An object to compare with this instance.</param> /// <returns>A 32-bit signed integer that indicates the relative order of the objects being compared.</returns> /// <exception cref="ArgumentException">The <paramref name="obj"/> is not the expected <see cref="Type"/>.</exception> public int CompareTo(object obj) { //------------------------------------------------------------ // If target is a null reference, instance is greater //------------------------------------------------------------ if (obj == null) { return(1); } //------------------------------------------------------------ // Determine comparison result using property state of objects //------------------------------------------------------------ AtomId value = obj as AtomId; if (value != null) { int result = Uri.Compare(this.Uri, value.Uri, UriComponents.AbsoluteUri, UriFormat.Unescaped, StringComparison.Ordinal); result = result | AtomUtility.CompareCommonObjectAttributes(this, value); return(result); } else { throw new ArgumentException(String.Format(null, "obj is not of type {0}, type was found to be '{1}'.", this.GetType().FullName, obj.GetType().FullName), "obj"); } }
/// <summary> /// Initializes a new instance of the <see cref="AtomSource"/> class using the supplied <see cref="AtomId"/>, <see cref="AtomTextConstruct"/>, and <see cref="DateTime"/>. /// </summary> /// <param name="id">A <see cref="AtomId"/> object that represents a permanent, universally unique identifier for this source.</param> /// <param name="title">A <see cref="AtomTextConstruct"/> object that represents information that conveys a human-readable title for this source.</param> /// <param name="utcUpdatedOn"> /// A <see cref="DateTime"/> that indicates the most recent instant in time when this source was modified in a way the publisher considers significant. /// The <see cref="DateTime"/> should be provided in Coordinated Universal Time (UTC). /// </param> public AtomSource(AtomId id, AtomTextConstruct title, DateTime utcUpdatedOn) { //------------------------------------------------------------ // Initialize class state using properties //------------------------------------------------------------ this.Id = id; this.Title = title; this.UpdatedOn = utcUpdatedOn; }