using System; class Base where T : new () { protected readonly T field = new T (); } class Derived : Base where T : ICloneable, new () { public Derived() { field.Clone(); } } class C : ICloneable { public object Clone () { return null; } public static void Main () { var a = new Derived (); } }