我想为一个类 X 创建一个初始化实例的 (:around 合格) 专门化器,它将首先调用下一个方法,然后调用另一个类的 make-instance,为它提供创建的 X 实例。我怎么能在 initialize-instance :around 方法中获取创建的实例?(当然假设在调用 call-next-method 之后我们处于 :around 的完成端)
编辑:A 类与 B 类通过每个插槽中的一个插槽保持另一个的 id 具有双向关系,但 A 类需要 B 类的 id,而相反则不需要。所以我想要的流程是:
- 生成实例'classA
在 initialize-instance :around classA 里面我会有:
一世。make-instance classB 并获取 id-of-B。
ii call-next-method 添加 id-of-B
iii 将classB点对应的id-of-A slot设置为我们创建的classA实例(这是我原来提问的原因)
现在我可以在 :before 中执行 [i] 和在 :after 中执行 [iii],但我不能:A 类和 B 类是大象的持久类,我想将整个流程包装在一个我不想跨越许多方法的事务中. 对于那些熟悉大象的人,我想使用 ensure-transaction 包装器,我不想在不同的点使用显式的 begin 和 commit 函数调用。