Nested Types
using System; public class Starter { public static void Main() { MyClass<int>.Nested<double> obj = new MyClass<int>.Nested<double>(); obj.MethodA(10, 12.34); } } public class MyClass<T> { public void MethodA(T arg) { } public class Nested<S> { public void MethodA(T arg1, S arg2) { Console.WriteLine("arg1: {0}", arg1.GetType().ToString()); Console.WriteLine("arg2: {0}", arg2.GetType().ToString()); } } }