【问题标题】:Test if class from a class reference (metaclass) variable is TMyClass测试类引用(元类)变量中的类是否为 TMyClass
【发布时间】:2011-07-18 04:40:30
【问题描述】:

我想知道从类引用创建的对象是特定类的实例还是它的任何后代。

换句话说,我想要一个布尔表达式,例如

var is TMyClass

但其中 var 被替换为涉及类引用变量的表达式。这听起来很简单,但我完全被难住了。

我可以创建一个实例 var := classRefVar.Create,对其进行测试,然后将其销毁,但这是一个巨大的开销。

奇怪的是,编译器不让我有

classRefVar(nil) is TMyClass

但对在语法上看似相同但无用的句法感到满意

TMyClass(nil) is TMyClass

显然,表达式

classRefVar = TMyClass

不好,因为 classRefVar 可能引用 TMyClass 的后代。

当我看到答案时,我期待着踢自己......

【问题讨论】:

    标签: delphi metaclass class-reference


    【解决方案1】:

    简单:

    ClassRefVar.InheritsFrom(TMyClass)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-06
      • 2012-12-02
      • 1970-01-01
      • 2013-02-24
      • 2012-12-13
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      相关资源
      最近更新 更多