有沒有辦法用Rtti來探索界面的屬性?Delphi Rtti:探索接口的屬性?
下面的代碼不起作用:
procedure ExploreProps;
var
Ctx: TRttiContext;
RttiType: TRttiType;
RttiProp: TRttiProp;
begin
RttiType := Ctx.GetType(TypeInfo(IMyInterface));
for RttiProp in RttiType.GetProperties do
Writeln(RttiProp.ToString);
end;
有沒有人解決如何正確地做到這一點?
好,但探索的接口方法不工作,要麼...只是通過使用RttiType.GetMethods取代了for循環,仍然沒有結果。 – 2010-09-12 15:21:23
@Christian:我只是看了RTTI系統的代碼,標準庫中的很多接口都沒有爲它們生成RTTI。我不確定爲接口類型生成擴展RTTI的規則是什麼,因爲它似乎不同於爲類或記錄生成擴展RTTI。也許巴里凱利或艾倫鮑爾可以回答這個問題? – 2010-09-12 15:37:03
爲了使TRttiType.GetMethods()報告接口的方法,接口類型需要應用'{M +}'。 – 2015-04-16 20:59:08