나는 TRttiContext.FindType(QualifiedTypeName)
을 사용하여 객체를 잡으려고합니다. 여기에 내가있어 무엇 :GetType이 성공했을 때 FindType이 RTTI를 얻지 못하는 이유는 무엇입니까?
program MissingRTTI;
{$APPTYPE CONSOLE}
uses System.SysUtils, RTTI, Classes;
type
TMyClass = class(TObject) end;
var
rCtx: TRttiContext;
rType: TRttiInstanceType;
begin
rCtx := TRttiContext.Create();
rType := rCtx.GetType(TypeInfo(TMyClass)) as TRttiInstanceType;
if (rType <> nil) then begin
WriteLn('Type found using TypeInfo');
end;
rType := rCtx.FindType(TMyClass.QualifiedClassName) as TRttiInstanceType;
if (rType <> nil) then begin
WriteLn('Type found using qualified class name.');
end;
ReadLn;
rCtx.Free();
end.
불행하게도, 단지 rCtx.GetType
원하는 유형을 찾을 것으로 보인다. (필자는 GetTypes를 사용하여 모든 유형을 나열하려고 시도했으나 원하는 유형이 결과 배열에 나타나지 않습니다.)이 유형의 컴파일러에서 RTTI를 내보내도록하는 방법을 아는 사람은 누구입니까?
감사의 말씀 RRUZ! 멋지다. +1 – conciliator