class A { public class Context { public delegate void D (T instance); public delegate void D2 (); } public class Constructor { public class Nested { public static void Test (Context.D d) { var c = new Constructor (); c.Before (d); } public static void Test (Context.D2 d) { var c = new Constructor (); c.Before (d); } } public void Before (Context.D d) { } public void Before (Context.D2 d) { } } } class C { public static int Main () { A.Context.D d = null; A.Constructor.Nested.Test (d); A.Context.D2 d2 = null; A.Constructor.Nested.Test (d2); return 0; } }