It should be a frequent scenario to sort the order of objects in a collection, such as ArrayList. ArrayList in c# provide a method named Sort(). But we need to let ArrayList know the detailed sorting algorithm.
There are two means to implement this:
1. Make the target class inheritted from IComparable interface, and provide CompareTo() method. IComparable interface comes from System namespace.
For example:
class UITestCase: IComparable { private int _sequenceno = 0; public int SequenceNo { get { return _sequenceno; } set { _sequenceno = value; } }......
// implement the IComparable interface, define the algorithm here public Int32 CompareTo(object next) { UITestCase nextCase = (UITestCase)next;
return (this.SequenceNo.CompareTo(nextCase.SequenceNo)); } } // class end.
When using ArrayList to store a group of UITestCase objects, we could simply call ArrayList.Sort() to sort all objects in it.
// get all test case entities, then make sort order ArrayList caseList = new ArrayList(); foreach (DirectoryInfo dir in nodeDirInfo.GetDirectories("*.tc")) { UITestCase testcase = new UITestCase(dir.FullName);
caseList.Add(testcase); }
if (caseList.Count > 0) { caseList.Sort(); }
2. Create a class inherited from IComparer interface, then implement Compare(object x, object y) method just like IComparable's CompareTo(object next) method.
3. Write a special method to sort the order of a given ArrayList like what we will do in C language, I prefer this one because I think the codes writing in above two methods are not straightforward enough.