アクティブなドキュメントでネイティブオブジェクトの追加、削除、編集を行う必要がある場合に、プログラムのプラグインを作成しています。 APIには、ドキュメントの編集時に発生するイベントがあります。ただし、プログラムでは、ネイティブオブジェクトが実際に変更されたときは追跡されません。代わりに、変更されたオブジェクトは削除されるオブジェクトとして扱われ、すぐに同じIDを持つ別の変更されたオブジェクトに置き換えられます。このようにして、プログラムは元に戻すレコードを追跡できます。複数のイベントが発生したときの追跡方法を教えてください。
オブジェクトが追加されます: OnAddObjectイベント
は、オブジェクトが削除される: OnDeleteObjectイベント
いくつか試して、私は次のようにイベントが誘発されていることが決定した後
オブジェクトが変更されました: OnReplaceObjectイベント - > OnDeleteObjectイベント - > OnAddObjectイベント
今、私のプラグインは、カスタムオブジェクトのインスタンスをコレクションに追加したりコレクションから削除したりするOnAddイベントとOnDeleteイベントだけを見ています。しかしこれは、オブジェクトが私のプラグインを変更するたびに、ほぼ同じオブジェクトを再初期化することを取り除くことを意味します。むしろドキュメントオブジェクトが変更されたので、私のカスタムオブジェクトは完全に再インスタンス化されるのではなく、リフレッシュできるようになっています。
OnDeleteイベントとOnAddイベントを購読している私のメソッドは、オブジェクトが実際に追加または削除されていないが、変更されたために置き換えられていることを通知できますか?
Add/RemoveイベントはReplacedイベントの前に発生するため、これは不可能です。 – Zyphrax
Ericの質問によると、Replaceイベントが発生し、続いてDeleteが続き、Addが表示されるので、Johannesソリューションはスレッド処理の問題を考慮してOKです。 –
この回答は私のソリューションに最も近いものです。私はBool変数を使用せず、むしろOnReplaceObjectイベントでオブジェクトのIDをキャッシュしました –