class C: D where T: A, ICloneable where S: B { ... } class E: D where T: class{ ... } class F: D where T: struct{ ... } class G: D where T: new(){ ... }