interface IFoo { T Bar { get; } } class Foo : IFoo { readonly string bar; public Foo (string bar) { this.bar = bar; } public string Bar { get { return bar; } } } public class Test { public static int Main () { string bar = "Who is John Galt?"; IFoo foo = new Foo(bar); IFoo foo2 = foo; if (!foo2.Bar.Equals (bar)) return 1; foo2 = new Foo(bar); if (foo2.Bar != bar) return 2; return 0; } }