Virtual method interception - 在Delphi XE中引入 - 可用于“代理”方法,以便可以在原始方法之前和之后执行自定义代码。
这还可以用于通过代理虚拟方法TObject.AfterConstruction和TObject.BeforeDestruction来保持Delphi应用程序中所有对象实例的计数吗?
如果是,这可能是在运行时分析FastMM4内存分配统计信息的一种简单方法(使用对象的InstanceSize属性并将其与分配的内存块进行匹配)。
更新:很抱歉从DocWiki信息中提出一个很容易回答的问题 - 我先阅读了链接的文章,只是略过了示例代码
答案 0 :(得分:3)
不,那不行。从documentation,我强调:
允许用户动态拦截特定类类型的指定实例上的虚拟方法调用。
问题是您需要在代理之前掌握每个实例。但是你希望代理以获取实例。所以你现在陷入鸡蛋和鸡蛋的境地。