using System; using System.Collections.Generic; public class NaturalComparer<T> : IComparer<T> where T: IComparable<T> { public int Compare (T a, T b) { return a.CompareTo (b); } } public class X { class Test : IComparable<Test> { public int CompareTo (Test that) { return 0; } public bool Equals (Test that) { return false; } } public static void Main () { IComparer<Test> cmp = new NaturalComparer<Test> (); Test a = new Test (); Test b = new Test (); cmp.Compare (a, b); } }