Проверьте, является ли класс из переменной ссылки на класс (метакласса) TMyClass - PullRequest
4 голосов
/ 18 марта 2011

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

Другими словами, я хочуБулево выражение, такое как

var is TMyClass

, но где var заменяется выражением, включающим ссылочную переменную класса .Звучит просто, но у меня все в тупике.

Я мог бы создать экземпляр var: = classRefVar.Create, протестировать его, а затем уничтожить, но это огромные накладные расходы.

Как ни странно,компилятор не даст мне иметь

classRefVar(nil) is TMyClass

, но доволен, казалось бы, синтаксически, но бесполезным

TMyClass(nil) is TMyClass

Очевидно, что выражение

classRefVar = TMyClass

являетсяничего хорошего, потому что classRefVar может ссылаться на потомка TMyClass.

Я ожидаю, что удару себя, когда увижу ответ ...

1 Ответ

7 голосов
/ 18 марта 2011

Легко:

ClassRefVar.InheritsFrom(TMyClass)
...