这可能是一个"不",但有什么方法可以使用Delphi的RTTI(旧学校或2010扩展RTTI)传入一个包含类型名称的字符串,特别是枚举的名称类型,并让它给我这种类型的PTypeInfo?我查看了RTTI.pas和TypInfo.pas,我没有看到任何可以做到这一点的函数,但我可能错过了一些东西.
我在找什么:
var
info: PTypeInfo;
begin
info := GetTypeInfoFromName('TComponentStyle');
end;
Run Code Online (Sandbox Code Playgroud)
或类似的东西.事实是,枚举类型的名称将被传入; 在编译时不知道.
Rob*_*ove 10
以下内容应与限定名称一起使用.
合格的名称是: UnitName.TypeName
type
ETypeNotFound = class(Exception);
function GetTypeInfoFromName(aTypeName : String) : pTypeInfo;
var
C : TRttiContext;
T : TRttiType;
begin
T := C.FindType(aTypeName);
if Not Assigned(T) then
raise ETypeNotFound.CreateFmt('Type %s is not found',[aTypeName]);
result := T.Handle;
end;
Run Code Online (Sandbox Code Playgroud)