Auf Englisch lesen

Teilen über


IEditableObject Schnittstelle

Definition

Stellt Funktionen für die Durchführung eines Commits oder Rollbacks für Änderungen an einem Objekt bereit, das als Datenquelle verwendet wird.

C#
public interface IEditableObject
Abgeleitet

Beispiele

Das folgende Beispiel bietet eine einfache Implementierung der IEditableObject Schnittstelle. Die Customer -Klasse speichert Kundeninformationen und kann als Sammlung für eine Kundendatenbank verwendet werden. In diesem Beispiel wird davon ausgegangen, dass Sie die CustomerList Klasse verwendet haben, die im Beispiel in der IBindingList -Klasse gefunden werden kann.

C#
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();
    }
}

Hinweise

Diese Schnittstelle wird in der Regel verwendet, um die BeginEditEndEditSemantik , und CancelEdit eines DataRowViewzu erfassen.

Methoden

BeginEdit()

Beginnt die Bearbeitung eines Objekts.

CancelEdit()

Verwirft die Änderungen seit dem letzten Aufruf von BeginEdit().

EndEdit()

Gibt Änderungen seit dem letzten Aufruf von BeginEdit() oder AddNew() an das zugrunde liegende Objekt weiter.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0