我试图在Delphi中将对象解析为XML,所以我读到了调用对象的ClassInfo方法以获取其RTTI信息.
问题是,这显然只适用于TPersistent对象.否则,我必须在编译器的源代码中专门添加编译器指令{$ M +}以生成RTTI信息.
所以我很高兴地添加了该指令,只是为了发现它,即使它确实从ClassInfo调用返回了一些东西(它曾经返回nil),现在我无法从中检索类的属性,字段或方法.这就像它创建了对象为空.
知道我在这里缺少什么吗?谢谢!
您是否将这些属性和方法放入该published
部分?
除此之外,'经典'RTTI($ TYPEINFO ON)只会获取有关属性的信息,而不是方法.你需要'扩展'RTTI($ METHODINFO ON).
扩展RTTI的良好起点:David Glassborow关于扩展RTTI
(谁会相信这一刻我写完了一些使用扩展RTTI的代码并决定稍微浏览Stack Overflow :))