namespace N { public partial class A { public partial class D { public class C : D { public void Test () { Foo (); } } } public partial class D2 { public class C2 : D2 { public void Test () { Foo (2); } } } } public partial class A { public partial class D : X { } public partial class D2 : X2 { } } public class X2 { public void Foo (W arg) { } } public class X { public void Foo () { } public static void Main () { new A.D.C ().Test (); new A.D2.C2 ().Test (); } } }