Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Интерфейс IEditableObject

 

Опубликовано: Октябрь 2016

Предоставляет функциональные возможности для фиксации или отката изменений объекта, используемый в качестве источника данных.

Пространство имен:   System.ComponentModel
Сборка:  System (в System.dll)

public interface IEditableObject

ИмяОписание
System_CAPS_pubmethodBeginEdit()

Начинает процедуру изменения объекта.

System_CAPS_pubmethodCancelEdit()

Отменяет изменения с момента последнего BeginEdit вызова.

System_CAPS_pubmethodEndEdit()

Передает изменения с момента последнего BeginEdit или IBindingList.AddNew вызов базового объекта.

Этот интерфейс обычно используется для записи BeginEdit, EndEdit, и CancelEdit семантику DataRowView.

Следующий пример предоставляет простую реализацию IEditableObject интерфейса. Customer Класс хранит сведения клиента и может использоваться как коллекция в базе данных клиента. В этом примере предполагается, что используется CustomerList класс, который можно найти в образце в IBindingList класса.

public class Customer : IEditableObject 
{

	struct CustomerData 
	{
		internal string id ;
		internal string firstName ;
		internal string lastName ;
	}

	private CustomersList parent;
	private CustomerData custData; 
	private CustomerData backupData; 
	private bool inTxn = false;

	// Implements IEditableObject
	void IEditableObject.BeginEdit() 
	{
		Console.WriteLine("Start BeginEdit");
		if (!inTxn) 
		{
			this.backupData = custData;
			inTxn = true;
			Console.WriteLine("BeginEdit - " + this.backupData.lastName);
		}
		Console.WriteLine("End BeginEdit");
	}

	void IEditableObject.CancelEdit() 
	{
		Console.WriteLine("Start CancelEdit");
		if (inTxn) 
		{
			this.custData = backupData;
			inTxn = false;
			Console.WriteLine("CancelEdit - " + this.custData.lastName);
		}
		Console.WriteLine("End CancelEdit");
	}

	void IEditableObject.EndEdit() 
	{
		Console.WriteLine("Start EndEdit" + this.custData.id + this.custData.lastName);
		if (inTxn) 
		{
			backupData = new CustomerData();
			inTxn = false;
			Console.WriteLine("Done EndEdit - " + this.custData.id + this.custData.lastName);
		}
		Console.WriteLine("End EndEdit");
	}

	public Customer(string ID) : base() 
	{
		this.custData = new CustomerData();
		this.custData.id = ID;
		this.custData.firstName = "";
		this.custData.lastName = "";
	}

	public string ID 
	{
		get 
		{
			return this.custData.id;
		}
	}

	public string FirstName 
	{
		get 
		{
			return this.custData.firstName;
		}
		set 
		{
			this.custData.firstName = value;
               this.OnCustomerChanged();
		}
	}

	public string LastName 
	{
		get 
		{
			return this.custData.lastName;
		}
		set 
		{
			this.custData.lastName = value;
               this.OnCustomerChanged();
		}
	}

	internal CustomersList Parent 
	{
		get 
		{
			return parent;
		}
		set 
		{
			parent = value ;
		}
	}

	private void OnCustomerChanged() 
	{
		if (!inTxn && Parent != null) 
		{
			Parent.CustomerChanged(this);
		}
	}

	public override string ToString() 
	{
		StringWriter sb = new StringWriter();
		sb.Write(this.FirstName);
		sb.Write(" ");
		sb.Write(this.LastName);
		return sb.ToString();
	}   
}

Универсальная платформа Windows
Доступно с 8
.NET Framework
Доступно с 1.1
Переносимая библиотека классов
Поддерживается в: переносимые платформы .NET
Silverlight
Доступно с 2.0
Windows Phone Silverlight
Доступно с 7.0
Windows Phone
Доступно с 8.1
Вернуться в начало
Показ: