Perhaps also add check for an interface? 
And the information should also be cached otherwise it is too expensive.
I would probably only do the check after the instantiation has failed and then produce a better error message there?