Undo/Redo

Most business application users are familiar with applications that have the ability to undo and redo changes that they have made.
It’s not common to see this functionality in custom built applications because it is quite difficult to do.
Despite this difficulty, undo/redo is consistently mentioned on the top of users' wish list.

The RecordableAttribute aspect makes it much easier to
add undo/redo to your application by automatically appending changes done on your object model to a
Recorder that you can then bind to your user interface.
Unlike other approaches to undo/redo, the RecordableAttribute aspect
only requires minimal changes to your source code.