using System; using System.Collections; namespace ProcessInfo { public class ProcessComparer : IComparer { private ProcessField compareField; public ProcessComparer( ProcessField compareField ) { this.compareField = compareField; } public int Compare( Process a, Process b ) { if ( ( a == null ) || ( b == null ) ) { throw new ArgumentNullException(); } switch ( compareField ) { case ProcessField.Pid: { return a.Pid.CompareTo( b.Pid ); } case ProcessField.Name: { return a.Name.CompareTo( b.Name ); } case ProcessField.WorkingSet: { return a.WorkingSet.CompareTo( b.WorkingSet ); } default: { return a.Pid.CompareTo( b.Pid ); } } } int IComparer.Compare( Object a, Object b ) { return this.Compare( (Process)a, (Process)b ); } } }