Я не думаю, что это взломать. Единственное, что мне не подходит, это то, что вы должны прикрепить атрибут к базовому классу при использовании наследования, чтобы сообщить ему, какие типы получены из него. Это немного перевернуто, но может быть сделано программно, так что это не конец света.