using System; namespace Martin.Baulig { public class X { public int A; } public class Y { public int B; } public struct SomeStruct { public int A; public R Data; public SomeStruct (int a, R data) { this.A = a; this.Data = data; } public void Invocation (SomeStruct arg) { Console.WriteLine ("INVOCATION: {0} {1} - {2} {3}", A, Data, arg.A, arg.Data); } } public class Foo where T : new () { public readonly T Data; public Foo () { Data = new T (); } public void Hello () { Console.WriteLine (Data); SomeStruct a = new SomeStruct (5, Data); Console.WriteLine (a); } } class GenericTest { static void Main () { Foo x = new Foo (); Foo y = new Foo (); x.Data.A = 5; y.Data.B = 9; x.Hello (); y.Hello (); } } }