Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
using System;
using NUnit.Framework;
using BLToolkit.EditableObjects;
namespace HowTo.EditableObjects
{
[TestFixture]
public class EditableObjectTest
{
public abstract class TestObject : EditableObject<TestObject>
{
// Any abstract property becomes editable.
//
public abstract string FirstName { get; set; }
public abstract string LastName { get; set; }
// This field is not editable.
//
public string FullName
{
get { return string.Format("{0} {1}", FirstName, LastName); }
}
}
[Test]
public void Test()
{
TestObject obj = TestObject.CreateInstance();
obj.FirstName = "Tester";
obj.LastName = "Testerson";
Assert.IsTrue(obj.IsDirty);
obj.AcceptChanges();
Assert.IsFalse(obj.IsDirty);
}
}
}
Это все таки намного более упрощенное решение. Насколько я помню можно откатить только последнюю операцию. Redo отсутсвует. Поддержка стека изменений отсутствует. Всегда надо наследоваться от определенного класса. Что делать со списками вообще не понятно. И как объеденить изменения в одну транзакцию, если они сделанны в 50 различных объектах, которые возможно даже не связанны друг с другом? Вообщем, это не Undo-Redo решение — это решение для OK-Cancel в простых формах редактирования.
Ну можно было конечно нарисовать два класса… UndoRedo<> и UndoRedoManager. Они даже не связаны между собой...
private readonly UndoRedo name = new UndoRedo<string />("");
public string string Name
{
get { return name.Value; }
set { name.Value = value; }
}
[UndoRedoProperty]
public string name {get; set;}
Про PostSharp предложение возможно жизнеспособное. Спасибо.
Следует понимать что статья писалась несколько лет назад, когда таких библиотек не было. Был голый фреймворк 2.0
Можно было бы добавить примочку в DejaVu проект, если руки дойдут… Если бы кто помог было бы совсем замечательно… А то многие хвалят, качают, но улучшения никто не присылает. Ну да ладно, я не обижаюсь :)).
Автоматизация Undo/Redo функциональности с помощью .NET Generics