// // This file contains the C# code from Program 5.3 of // "Data Structures and Algorithms // with Object-Oriented Design Patterns in C#" // by Bruno R. Preiss. // // Copyright (c) 2001--2002 by Bruno R. Preiss, P.Eng. All rights reserved. // // http://www.brpreiss.com/books/opus6/programs/pgm05_03.txt // public abstract class ComparableValue : ComparableObject { protected IComparable obj; public ComparableValue(IComparable obj) { this.obj = obj; } public virtual object Object { get { return obj; } } public override int CompareTo(object arg) { ComparableValue cv = arg as ComparableValue; if (obj.GetType() == cv.obj.GetType()) return obj.CompareTo(cv.obj); else return obj.GetType().FullName.CompareTo( cv.obj.GetType().FullName); } public override int GetHashCode() { return obj.GetHashCode(); } public override string ToString() { return obj.ToString(); } }