gpt4 book ai didi

delphi - 通过 RTTI 调用 protected 方法(构造函数)

转载 作者:行者123 更新时间:2023-12-03 15:02:58 25 4
gpt4 key购买 nike

我正在使用 XE-2。

是否可以使用 RTTI 调用 protected 方法(构造函数)?

我在网上搜索但没有找到任何确凿的答案。据我所知,在 XE 之前,只有已发布的方法/属性可用。我确实拥有对私有(private)字段的写访问权限,因此我希望能够调用 protected 方法。

只要构造函数是公共(public)的,以下代码就可以工作。

function GetDefaultConstructor(aRttiType: TRttiType): TRttiMethod;
var
Method: TRttiMethod;
begin
for Method in aRttiType.GetMethods('Create') do
begin
if (Method.IsConstructor) and (length(Method.GetParameters) = 0) and (Method.Parent = aRttiType) then
Exit(Method);
end;
Result := nil;
end;

最佳答案

默认情况下,RTTI 不包含有关 protected 方法或构造函数的信息,但是您可以使用 RTTI EXPLICIT包含 protected 方法的 RTTI 信息的指令,如下所示。

  {$RTTI EXPLICIT METHODS([vcPrivate, vcProtected, vcPublic, vcPublished])}
TFoo= class
protected
constructor Create;
end;

关于delphi - 通过 RTTI 调用 protected 方法(构造函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29633980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com