public static void Main()
public static BaseGeneric<TBase> Test<TBase>() where TBase : Base
return (new Blah() as BaseGeneric<TBase>);
public class Derived : Base
public class BaseGeneric<TBase> where TBase : Base
public class Blah : BaseGeneric<Derived>