如何在Delphi类方法中获取并返回ClassType类类型?
在Delphi类方法中返回类类型的方法
在Delphi的类方法里,Self关键字的含义和实例方法不同——它指向的是类本身的引用,而非实例对象。所以直接返回Self就能得到当前类的类型,具体实现如下:
基础实现(返回通用TClass类型)
class function TSomething.MyClass: TClass; begin Result := Self; end;
进阶实现(返回具体类引用类型)
如果需要返回更具体的类引用类型(而非通用的TClass),可以先定义对应的类引用类型,再做类型转换:
type // 定义TSomething的类引用类型 TSomethingClass = class of TSomething; class function TSomething.MyClass: TSomethingClass; begin Result := TSomethingClass(Self); end;
补充说明
- 实例方法中的
Self.ClassType本质也是获取实例所属类的引用,和类方法中直接使用Self的效果一致,只是调用场景不同。 - 这种方式在Delphi各版本中都适用,包括早期的Delphi 7等版本。
内容的提问来源于stack exchange,提问作者Alister
相关产品推荐
相关产品推荐

