Проверьте, является ли класс из переменной ссылки на класс (метакласса) TMyClass

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

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

var is TMyClass

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

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

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

classRefVar(nil) is TMyClass

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

TMyClass(nil) is TMyClass

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

classRefVar = TMyClass

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

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

1 ответ

Решение

Легко:

ClassRefVar.InheritsFrom(TMyClass)
Другие вопросы по тегам