Я создал форму, которая используется для добавления и редактирования пользовательского объекта.Какой режим принимает форма, обеспечивается значением перечисления, переданным из вызывающего кода.Я также передаю объект пользовательского типа.Все мои элементы управления в данных привязаны к конкретным свойствам пользовательского объекта.Когда форма находится в режиме добавления, это прекрасно работает, так как когда элементы управления обновляются с данными, базовый объект также.Однако в режиме редактирования я сохраняю две переменные пользовательского объекта, предоставляемые вызывающим кодом, оригинал и временную переменную, создаваемую путем глубокого копирования.Затем элементы управления привязываются к временной копии, что позволяет легко отменить изменения, если пользователь нажмет кнопку «Отмена».Что я хочу знать, так это как сохранить эти изменения обратно в исходный объект, если пользователь нажимает кнопку ОК, так как теперь происходит отключение из-за глубокого копирования.Я пытаюсь избежать реализации внутреннего свойства в форме добавления / редактирования, если могу.Ниже приведен пример моего кода:
public AddEditCustomerDialog(Customer customer, DialogMode mode)
{
InitializeComponent();
InitializeCustomer(customer, mode);
}
private void InitializeCustomer(Customer customer, DialogMode mode)
{
this.customer = customer;
if (mode == DialogMode.Edit)
{
this.Text = "Edit Customer";
this.tempCustomer = ObjectCopyHelper.DeepCopy(this.customer);
this.customerListBindingSource.DataSource = this.tempCustomer;
this.phoneListBindingSource.DataSource = this.tempCustomer.PhoneList;
}
else
{
this.customerListBindingSource.DataSource = this.customer;
this.phoneListBindingSource.DataSource = this.customer.PhoneList;
}
}