Czy istnieje sposób na poznanie właściwości interfejsu za pomocą Rtti?Delphi Rtti: Przeglądaj właściwości interfejsów?
Poniższy kod nie działa:
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;
Czy ktoś rozwiązanie jak to zrobić poprawnie?
Ok, ale odkrywanie interfejsy metod nie działa albo ... Tylko zamieniła pętlę for za pomocą metody RttiType.GetMethods, nadal nie uzyskała żadnych wyników. –
@ Chrześcijanin: Po prostu spojrzałem na kod systemu RTTI i wiele interfejsów w standardowych bibliotekach zostało skonfigurowanych bez wygenerowanego dla nich RTTI. Nie jestem pewien, jakie reguły są dla generowania rozszerzonego RTTI dla typów interfejsów, ponieważ wydaje się być inny niż generowanie rozszerzonego RTTI dla klas lub rekordów. Może Barry Kelly lub Allen Bauer mogliby odpowiedzieć na to pytanie? –
Typ interfejsu musi mieć "{M +}" zastosowany do niego, aby 'TRttiType.GetMethods()' zgłosić metody interfejsu. –