Instantiating a type-constrained generic class without subclassing it
问题 Background [Skip to Question if you're not interested in the background] I stumbled across this generic class definition when reading the other day, and it stumped me for some time: public abstract class Entity<T> where T : Entity<T> I was puzzled as to how T on Entity<T> could be of Type Entity<T> itself. It seemed some sort of bizarre recursive constraint. I then realised that this constraint could be satisfied by subclassing (which is, of course, what abstract is demanding of the class):