class nor { static public nor StaticFuctory() { return new nor(); } } class gen<T> where T : new() { static public T StaticFuctory() { return new T(); } } class gen2<T, U, V> where T : new() where U : gen<T> where V : nor { public gen2() { nor n = V.StaticFactory(); var t = U.StaticFuctory(); } }