var user = Hardener.Harden(user);
user.Ban; //You better be an admin, or you just got yourself a HardenException

The Why

Some of you might be asking why you need this. After all, the only people who can access against your model are you and other developers at your company...

STOP. RIGHT. THERE.

Like it or not, objects end up with internal state machines, with methods that should be called in certain ways.
Whether it's someone else at your company, someone who used to work there or someone who will, at some point your objects are going to be misused, maltreated

and a new bug is going to have to be found and raised and fixed. Invalid calls to Hardened objects don't make it into the trunk.