使用RttiContext.FindType('Classes.TStringList')
我可以毫无问题地获得TStringList的RttiType。但是使用 RttiContext.FindType('MyUnit.TMyClass')
我总是得到 nil (当然 MyUnit 在 use 子句中)。为什么,出了什么问题?
示例:
unit MyUnit;
interface
uses
Classes;
type
TMyClass = class(TStringList)
end;
implementation
end.
Main unit:
...
uses
MyUnit,
...
var
oCont: TRttiContext;
oType: TRttiType;
begin
oCont := TRttiContext.Create;
try
oType := oCont.FindType('MyUnit.TMyClass'); <== oType = nil !!
...
最佳答案
delphi 链接器可能未将该类包含在最终的可执行文件中。快速尝试如下:
- 在您的类上声明一个静态方法。该方法应该是一个空方法,一个简单的
begin end
。 - 在此单元的初始化部分调用此静态方法。
- 确保您的项目中某处引用了该单元。
- 现在您应该看到带有
TRttiContext.FindType
的类。
关于Delphi 2010 RTTI - RttiContext.FindType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3460382/