Я пишу плагин для программы, в которой мне нужно отслеживать, когда собственные объекты добавляются, удаляются и редактируются в активном документе. В API есть события, которые запускаются при редактировании документа. Тем не менее, программа не отслеживает, когда собственные объекты действительно меняются. Вместо этого изменение объекта обрабатывается как удаляемый объект, а затем немедленно заменяется другим измененным объектом с тем же идентификатором. Это делается таким образом, чтобы программа могла отслеживать запись отмены.
После некоторых экспериментов я определил, что события вызываются следующим образом:
Добавлен объект: Событие OnAddObject
Объект удален: Событие OnDeleteObject
Объект изменен: Событие OnReplaceObject-> Событие OnDeleteObject-> Событие OnAddObject
Прямо сейчас мой плагин только наблюдает за событиями OnAdd и OnDelete, где он добавляет и удаляет экземпляры моего пользовательского объекта в коллекцию и из нее. Но это также означает, что каждый раз, когда объект изменяется, мой плагин удаляет повторную инициализацию почти идентичного объекта. Я предпочел бы просто знать, что объект документа изменился, поэтому мой пользовательский объект может быть обновлен, а не полностью восстановлен.
Как мои методы, подписанные на события OnDelete и OnAdd, могут указать, что объект на самом деле не добавляется и не удаляется, а заменяется, потому что он изменился?