using System; namespace director_protectedNamespace { public class runme { static void Main() { runme r = new runme(); r.run(); } void run() { Bar b = new Bar(); Foo f = b.create(); FooBar fb = new FooBar(); FooBar2 fb2 = new FooBar2(); FooBar3 fb3 = new FooBar3(); String s; s = fb.used(); if ( s != ("Foo::pang();Bar::pong();Foo::pong();FooBar::ping();")) throw new Exception("bad FooBar::used" + " - " + s); s = fb2.used(); if ( s != ("FooBar2::pang();Bar::pong();Foo::pong();FooBar2::ping();")) throw new Exception("bad FooBar2::used"); s = b.pong(); if ( s != ("Bar::pong();Foo::pong();Bar::ping();")) throw new Exception("bad Bar::pong"); s = f.pong(); if ( s != ("Bar::pong();Foo::pong();Bar::ping();")) throw new Exception("bad Foo::pong"); s = fb.pong(); if ( s != ("Bar::pong();Foo::pong();FooBar::ping();")) throw new Exception("bad FooBar::pong"); // if (fb3.cheer() != "FooBar3::cheer();") // throw new Exception("bad fb3::cheer"); if (fb2.callping() != "FooBar2::ping();") throw new Exception("bad fb2.callping"); if (fb2.callcheer() != "FooBar2::pang();Bar::pong();Foo::pong();FooBar2::ping();") throw new Exception("bad fb2.callcheer"); if (fb3.callping() != "Bar::ping();") throw new Exception("bad fb3.callping"); if (fb3.callcheer() != "FooBar3::cheer();") throw new Exception("bad fb3.callcheer"); } } class FooBar : Bar { public FooBar() : base() { } protected override String ping() { return "FooBar::ping();"; } } class FooBar2 : Bar { public FooBar2() : base() { } protected override String ping() { return "FooBar2::ping();"; } protected override String pang() { return "FooBar2::pang();"; } } class FooBar3 : Bar { public FooBar3() : base() { } protected override String cheer() { return "FooBar3::cheer();"; } } }