仅给定一个TRttiMethod
,是否有可能找到定义类?
我在基类中定义了一个类过程,当我在派生类中搜索方法时,它会显示出来。我可以调用它,但是我想找出实际定义该方法的基类的名称,而不是派生类的名称。
TRttiMethod
关于 classtype 等的所有属性都返回TRttiMethod
自己的定义,而不是实现类的定义。
TBase = class
public
class procedure Write;
end;
THigher = class(TBase);
var Context:=TRttiContext.Create;
var T:=Context.GetType(THigher);
var Method: TRttiMethod:=nil;
for var Item in T.GetMethods('Write') do
if (Item.MethodKind=TMethodKind.mkClassProcedure) then
begin
Method:=Item;
// How to get TBase from Method ?
break;
end;
该
TRttiMethod.Parent
属性代表TRttiType
声明类。在您的示例中,
Parent
指的是TBase
类。Parent.Name
属性和Parent.ToString()
方法将返回字符串'TBase'
。TClass
如果您需要方法声明类的实际值,您可以从Parent.AsInstance.MetaclassType
属性中获取它。