Я нашел в Интернете следующие реализации:
- Общая реализация IEditableObject через TypeDescriptor и Reflection
- Пол Стовелл: Адаптер IEditableObject для WPF и Windows Forms
Код: Выделить всё
private Item backupCopy;
private bool inEdit;
public void BeginEdit()
{
if (inEdit) return;
inEdit = true;
backupCopy = this.MemberwiseClone() as Item;
}
public void CancelEdit()
{
if (!inEdit) return;
inEdit = false;
this.Name = backupCopy.Name;
}
public void EndEdit()
{
if (!inEdit) return;
inEdit = false;
backupCopy = null;
}
Что такое разница здесь? Каковы недостатки моего подхода, помимо отсутствия поддержки глубокого копирования? Как бы вы изменили его для поддержки глубокого копирования (пока не совсем уверены, необходимо ли это)?
Обновление:
Нашел эту статью, показывающую лучшую реализацию. чем мой, использующий отражение. Все еще намного проще, чем две другие статьи, на которые я дал ссылку:
- Многократное использование EditableModelBase с использованием IEditableObject
Подробнее здесь: https://stackoverflow.com/questions/149 ... mentations
Мобильная версия