Comment puis-je déterminer si un objet Delphi est d'une classe spécifique et non pas un descendant de la classe?

J'ai ces classes et d'une procédure:

 TParent = class(TObject);
 TChild1 = class(TParent);     
 TChild2 = class(TParent);

 Procedure DoSomething(obj:TParent);

Ce que je voudrais faire, c'est quand obj est un TParent et pas un descendant de soulever une exception.

J'ai pensé à faire quelque chose comme ceci:

if obj.classname = TParent.classname then raise exception.create....

mais il semble un peu hackish (TM)

Plus: Ce que j'ai prévu est de pouvoir passer des objets que les propriétés partagées/procédures en commun. Après plus de pensée, la TParent Objet n'est pas vraiment nécessaire, ce dont j'avais besoin était un objet de l'interface indiqué dans ma réponse.

  • Hormis les réponses déjà données, il ya certainement de cas valables que cela, mais pas tant que ça. Pourquoi avez-vous besoin de savoir?
  • +1 pour la pensée que c'était un hack. En règle générale, si vous faites du type de choses avec des chaînes, vous êtes probablement fait quelque chose de mal.