using System; public class C where T1 : B, new () { public void Test () { using (var a = new T1 ()) { } } } public class B : IDisposable { void IDisposable.Dispose () { } } public class Test : B { public static void Main () { new C ().Test (); } }