Доработал сегодня Transaction Objects. Пофиксил старые баги, добавил новые :)
Из основных изменений:
- Объект теперь не надо явно регистрировать в транзакции.
Точнее, вообще никак не надо.
Сделал так потому, что для сложных объектов, которые "внутри" оперируют или содержат другие транзакционные объекты и т.д, явная регистрация всех этих "вложенных" транзакционных объектов в транзакции становится головной болью.
Теперь всё, что делается внутри ObjectTransactionScope, автоматически относится только к текущей транзакции. Для TransactionObjects\TransactionProperties, разумеется :)
- TransactionProperties теперь обладают некоторыми метаданными.
В частности, появилась возможность задать значение по умолчанию, возможность коррекции присваиваемого значения (CoerceValue) и возможность оповещения об изменениях свойства (PropertyChanged).
Реализовано примерно так же, как и в случае с DependencyObjects - через коллбек-делегаты.
Так же могу отметить, что скорость работы изменилась в лучшую сторону :)
Transactions.zip (25.47 kb)