using System; public interface Foo { Foo foo(); } class Foo_int : Foo { private int content = 0; public Foo_int(int content) { this.content = content; } public Foo foo() { return new Foo_int(content + 1); } public override string ToString() { return content.ToString(); } } public class Test { public static Foo bar(Foo x) { return x.foo(); } public static void Main() { var x = new Foo_int(1); Console.WriteLine(bar(x)); } }