最初に call-next-method を呼び出し、次に別のクラスの make-instance を呼び出して、作成された X のインスタンスを提供する、クラス X の initialize-instance の (:around 修飾された) スペシャライザーを作成したいと考えています。 initialize-instance :around メソッド内で作成されたインスタンスを取得しますか? (もちろん、call-next-method を呼び出した後で、:around の終了側にいると仮定します)
編集: クラス A は、互いの ID を保持するそれぞれのスロットを介してクラス B と双方向の関係を持っていますが、クラス A はクラス B の ID を必要としますが、反対は必要ありません。だから私が望むフローは次のとおりです。
- メイクインスタンス「classA
initialize-instance :around classA の内部では、次のようになります。
私。インスタンスのクラス B を作成し、id-of-B を取得します。
ii call-next-method id-of-B を追加
iii classB ポイントの対応する id-of-A スロットを、作成した classA インスタンスに設定します (これが私の最初の質問の理由です)
今、私は [i] in :before と [iii] in :after を行うことができましたが、できません: クラス A と B は象を介した永続クラスであり、多くのメソッドにまたがりたくないトランザクションでフロー全体をラップしたい. エレファントに精通している方のために説明すると、ensure-transaction ラッパーを使用したいと考えており、異なるポイントで明示的な begin および commit 関数呼び出しを使用したくありません。