using System; public class Foo { public void Map (S value) { Foo result = new Foo (); result.Test (value); } protected virtual void Test (T value) { Console.WriteLine (value); } } class X { public static void Main () { Foo a = new Foo (); a.Map ("Hello World"); } }