INotifyPropertyChanged достаточно ясен, и я думаю, что я могу понять, когда его поднимать (т.е. когда я закончил обновление значений).
Если я реализую INotifyPropertyChanging, я собираюсь поднять это событие, как только я войду в setter или другой метод, который изменит состояние объектов, а затем продолжит любые действия и проверки, которые могут возникнуть.
Итак, я рассматриваю событие как уведомление о том, что свойство может измениться, но оно еще не изменено и может не завершиться успешно.
Если пользователи объекта используют это свойство (например, скажем, LINQ to SQL с использованием события для отслеживания изменений), я должен удерживать и только поднимать событие, как только я подтвердил, что значения, которые мне были предоставлены, хорошо, и состояние объекта действительно для изменения?
Каков контракт на это событие и какие побочные эффекты будут у абонентов?