using System; public class X { } public class Y { } public class W: Y { } public class Z<K, V> where K:X where V:Y { } public class Starter{ public static void Main(){ // good Z<X, Y> obj= new Z<X, Y>(); // good Z<X, W> obj2= new Z<X, W>(); // bad //Z<W, Y> obj3 = new Z<W, Y>(); } }