Цитата:
Где это жизненно можно применить?
Есть достаточно большое количество модификаций, которые сводятся к дописыванию чего-нибудь в конец метода. Или в начало. Например, есть validateField, в табличку добавили поле, и надо дописать в конце метода проверку и для этого поля.
Проблема в том, что может случиться обновление системы и разработчики MS допишут свой код в validateFIeld. В этом случае придется объединять код руками.
А можно добавленный код выделить в отдельный метод validateField_MY. И этот метод прицепить обработчиком события "после validateField". Тогда при обновлении просто изменится код validateFIeld, а validateField_MY останется неизменным на нашем слое как и факт того, что он является обработчиком. Это может сэкономить время и делает более явной отделение кастомизации от исходного кода.
Или вот, например, есть такая приблуда -
InfologStackTrace. Когда я ее писал, я специально не стал помещать ее код полнотью в XPO, чтобы случайно не затерли какой-то другой код (там надо добавить строчку в начале Info.add). Нужно импортировать xpo а потом дописать info.add. Теперь в Ax2012 можно сделать так:
- добавить нужный код в свой обработчик события перед вызовом info.add
- переместить весь код утилиты включая обработчик события в свою
модель
- выгрузить модель в файл.
Тогда для установки утилиты можно будет просто загрузить в приложение модель. А для удаления - удалить модель. И разбираться в коде утилиты, сравнивать там что-то не надо.
А если кто-то напишет приблуду, которая, допустим, записывает добавляемые сообщения инфолога в файл, он может сделать по тому же сценарию и загрузить свою модель независимо. И эти две утилиты модно будет сразу накатить одновременно, не исправляя руками info.add - просто у этого метода будут два подписчика.
Кстати, документацию по Ax2012 уже выложили в MSDN -
см про события в AOT