与RttiContext.FindType('Classes.TStringList')
我得到RttiType TStringList没有问题。但与RttiContext.FindType('MyUnit.TMyClass')
我总是得到零(当然MyUnit是在使用条款)。为什么,什么是错的?德尔福2010 RTTI - RttiContext.FindType
例子:
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 !!
...
谢谢,你是对的,类没有包含在可执行文件中!重新启动IDE后,我把我的代码引用TMyClass - GetType(TMyClass),所以类包含在exe中。这就是为什么我得到正确的RttiType! – Branko 2010-08-12 04:19:47
@Branko 很高兴有用。我在使用外部配置文件开发Delphi ORM时遇到了这个“问题”。每个数据库适配器(或业务逻辑类)仅在外部文件中有引用,因此在最终的可执行文件中没有。所以我使用了静态方法。 – 2010-08-12 10:58:48
这是解决此问题的弱方法。因为它迫使你修改这个类。更好的选项可以在这里找到:http://stackoverflow.com/a/10613212/576719 – 2014-10-03 19:30:21