static void Main(string[] args) { MyClass mc = new MyClass(); var result = mc.DoSomething("world", "hello"); Console.WriteLine(result); MyClass2 <MyClass> myClass2 = new MyClass2 <MyClass>(); myClass2.Process(mc); //MyClass2<MyClass3> myClass2 = new MyClass2<MyClass3>(); //results in compilation error because the generic expected type list does not include int Console.ReadLine(); }