IEditableObjectとは? わかりやすく解説

IEditableObject インターフェイス

データ ソースとして使用されるオブジェクト変更コミットまたはロールバックする機能提供します

名前空間: System.ComponentModel
アセンブリ: System (system.dll 内)
構文構文

Dim instance As IEditableObject
public interface IEditableObject
public interface class IEditableObject
public interface IEditableObject
public interface IEditableObject
解説解説

通常、このインターフェイスは、DataRowView の BeginEdit、EndEdit、CancelEdit の各セマンティクス取り込むために使用されます。

使用例使用例

次のサンプルは、IEditableObject インターフェイス簡単な実装示したものです。Customer クラス顧客情報格納し顧客データベース用のコレクションとして使用できます。この例は、IBindingList クラスサンプル含まれている CustomerList クラス使用したことがあることを前提としています。

Public Class Customer
    Implements IEditableObject

    Structure CustomerData
        Friend id As String
        Friend firstName As String
        Friend lastName As String
    End Structure 

    Public parent As CustomersList
    Private custData As CustomerData
    Private backupData As CustomerData
    Private inTxn As Boolean
 = False


    ' Implements IEditableObject
    Sub BeginEdit() Implements IEditableObject.BeginEdit
        Console.WriteLine("Start BeginEdit")
        If Not inTxn Then
            Me.backupData = custData
            inTxn = True
            Console.WriteLine(("BeginEdit - " + Me.backupData.lastName))
        End If
        Console.WriteLine("End BeginEdit")
    End Sub 


    Sub CancelEdit() Implements IEditableObject.CancelEdit
        Console.WriteLine("Start CancelEdit")
        If inTxn Then
            Me.custData = backupData
            inTxn = False
            Console.WriteLine(("CancelEdit - " + Me.custData.lastName))
        End If
        Console.WriteLine("End CancelEdit")
    End Sub 


    Sub EndEdit() Implements IEditableObject.EndEdit
        Console.WriteLine(("Start EndEdit" + Me.custData.id
 + Me.custData.lastName))
        If inTxn Then
            backupData = New CustomerData()
            inTxn = False
            Console.WriteLine(("Done EndEdit - " +
 Me.custData.id + Me.custData.lastName))
        End If
        Console.WriteLine("End EndEdit")
    End Sub 


    Public Sub New(ByVal
 ID As String)
        Me.custData = New CustomerData()
        Me.custData.id = ID
        Me.custData.firstName = ""
        Me.custData.lastName = ""
    End Sub 


    Public ReadOnly Property
 ID() As String
        Get
            Return Me.custData.id
        End Get
    End Property


    Public Property FirstName() As
 String
        Get
            Return Me.custData.firstName
        End Get
        Set(ByVal Value As
 String)
            Me.custData.firstName = Value
            Me.OnCustomerChanged()
        End Set
    End Property


    Public Property LastName() As
 String
        Get
            Return Me.custData.lastName
        End Get
        Set(ByVal Value As
 String)
            Me.custData.lastName = Value
            Me.OnCustomerChanged()
        End Set
    End Property


    Friend Property Parents() As
 CustomersList
        Get
            Return Parent
        End Get
        Set(ByVal Value As
 CustomersList)
            parent = Value
        End Set
    End Property


    Private Sub OnCustomerChanged()
        If Not inTxn And
 Not (Parent Is Nothing)
 Then
            Parent.CustomerChanged(Me)
        End If
    End Sub 

    
    Public Overrides Function
 ToString() As String
        Dim sb As New StringWriter()
        sb.Write(Me.FirstName)
        sb.Write(" ")
        sb.Write(Me.LastName)
        Return sb.ToString()
    End Function 
End Class

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();
    }   
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

IEditableObject メソッド


IEditableObject メンバ




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「IEditableObject」の関連用語

IEditableObjectのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



IEditableObjectのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS