As far as I can tell from what you've describe, the :Init subroutine is the appropriate place for such checks to be made. I also see no way to 'parametrize' the sort of checks you're suggesting. All of this sounds like class-specific checking that is appropriate for inclusion in an :Init subroutine.
If you can come up with a 'real' example where the existing model is inadequate, that might provide me with more ideas to chew on.