static void Main(string[] args) { var foot = new FooT(); var foo = new Foo<FooT>(); var foo2 = new Foo2<int>(); // prefered solution using CompareTo method var bar = new Bar<string>(); // Bar<T> has implementation eqivalent to Foo2<T> var myGen = new MyGeneric<cMyType>(); Console.WriteLine(foo.IsInRange(foot)); Console.WriteLine(foo2.IsInRange(5)); Console.WriteLine(bar.IsInRange("nine")); Console.WriteLine(myGen + myGen); Console.WriteLine("Press ANY key to exit."); Console.ReadKey(); }