| 0 | 1 <% title # EditableObject class %> | 
|  | 2 <% order # 1 %> | 
|  | 3 <p class="j"> | 
|  | 4 <b>EditableObject</b> is an object that provides functionality to commit and rollback changes to itself. | 
|  | 5 After verifying the accuracy of changes made to the object, you can accept the changes | 
|  | 6 using the <b>AcceptChanges</b> method of the object, which will set the <b>Current</b> field values | 
|  | 7 to be the <b>Original</b> values. The <b>RejectChanges</b> method rejects all changes made to the object | 
|  | 8 since <b>AcceptChanges</b> was last called. The <b>IsDirty</b> property gets a value that indicates | 
|  | 9 whether the object has changed. | 
|  | 10 </p> | 
|  | 11 <p class="j"> | 
|  | 12 If we wrote an editable object manually, we could get the following code just for two editable properties: | 
|  | 13 </p> | 
|  | 14 <% Doc\EditableObjects\ManualEditableObject.cs %> | 
|  | 15 | 
|  | 16 <p class='j'> | 
|  | 17 BLToolkit allows implementing the same functionality by inheriting your object | 
|  | 18 from the BLToolkit <b>EditableObject</b> base class and replacing editable members with abstract properties. | 
|  | 19 </p> | 
|  | 20 EditableObjectTest.cs | 
|  | 21 <% ..\..\..\HowTo\EditableObjects\EditableObjectTest.cs %> | 
|  | 22 | 
|  | 23 <p class='j'> | 
|  | 24 BLToolkit type builder will generate the following for the class above: | 
|  | 25 </p> | 
|  | 26 <% Doc\EditableObjects\EditableObject.cs %> |