Freigeben über


XObjectChange Enumeration

Definition

Gibt den Ereignistyp an, wenn ein Ereignis für ein XObject ausgelöst wird.

public enum class XObjectChange
public enum XObjectChange
type XObjectChange = 
Public Enum XObjectChange
Vererbung
XObjectChange

Felder

Add 0

Einem XObject wurde oder wird ein XContainer hinzugefügt.

Name 2

Ein XObject wurde oder wird umbenannt.

Remove 1

Ein XObject wurde oder wird aus einem XContainer entfernt.

Value 3

Der Wert eines XObject wurde oder wird geändert. Darüber hinaus wird dieses Ereignis durch eine Änderung der Serialisierung eines leeren Elements (entweder aus einem leeren Tag in ein Starttag-Endtag-Paar oder umgekehrt) ausgelöst.

Beispiele

Im folgenden Beispiel wird ein -Ereignis ausgelöst, indem der Struktur ein -Element hinzugefügt wird.

XElement root = new XElement("Root", "content");  
root.Changing += (sender, e) =>  
    {  
        Console.WriteLine("Changing event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changing: " + e.ObjectChange);  
    };  
root.Changed += (sender, e) =>  
    {  
        Console.WriteLine("Changed event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changed: " + e.ObjectChange);  
    };  
root.Add(new XElement("Child", "child content"));  

Dieses Beispiel erzeugt die folgende Ausgabe:

Changing event raised  
  Sender: System.Xml.Linq.XElement  
  Changing: Add  
Changed event raised  
  Sender: System.Xml.Linq.XElement  
  Changed: Add  

Im folgenden Beispiel wird ein -Ereignis ausgelöst, indem ein Element aus der Struktur entfernt wird.

XElement root = new XElement("Root",  
    new XElement("Child", "content")  
);  
root.Changing += (sender, e) =>  
    {  
        Console.WriteLine("Changing event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changing: " + e.ObjectChange);  
    };  
root.Changed += (sender, e) =>  
    {  
        Console.WriteLine("Changed event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changed: " + e.ObjectChange);  
    };  
root.Element("Child").Remove();  

Dieses Beispiel erzeugt die folgende Ausgabe:

Changing event raised  
  Sender: System.Xml.Linq.XElement  
  Changing: Remove  
Changed event raised  
  Sender: System.Xml.Linq.XElement  
  Changed: Remove  

Im folgenden Beispiel wird ein Ereignis ausgelöst, indem der Name eines Elements geändert wird.

XElement root = new XElement("Root", "content");  
root.Changing += (sender, e) =>  
    {  
        Console.WriteLine("Changing event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changing: " + e.ObjectChange);  
    };  
root.Changed += (sender, e) =>  
    {  
        Console.WriteLine("Changed event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changed: " + e.ObjectChange);  
    };  
root.Name = "NewName";  

Dieses Beispiel erzeugt die folgende Ausgabe:

Changing event raised  
  Sender: System.Xml.Linq.XElement  
  Changing: Name  
Changed event raised  
  Sender: System.Xml.Linq.XElement  
  Changed: Name  

Im folgenden Beispiel wird ein Ereignis ausgelöst, indem der Wert eines Attributs festgelegt wird.

XElement root = new XElement("Root",  
    new XAttribute("Att", "att value")  
);  
root.Changing += (sender, e) =>  
    {  
        Console.WriteLine("Changing event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changing: " + e.ObjectChange);  
    };  
root.Changed += (sender, e) =>  
    {  
        Console.WriteLine("Changed event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changed: " + e.ObjectChange);  
    };  
root.FirstAttribute.Value = "new contents";  

Dieses Beispiel erzeugt die folgende Ausgabe:

Changing event raised  
  Sender: System.Xml.Linq.XAttribute  
  Changing: Value  
Changed event raised  
  Sender: System.Xml.Linq.XAttribute  
  Changed: Value  

Hinweise

Dies enum gibt den Ereignistyp an, wenn für ein XObject-Ereignis ausgelöst wird.

Alle Vorgänge, die die XML-Struktur ändern, werden in eine Reihe von Grundtypen aufgebrochen. Es gibt vier Typen von Grundtypen. Zwei der Grundtypen (Hinzufügen und Entfernen) wirken auf Auflistungen. Zwei davon (Name und Wert) wirken auf Instanzen. Für jeden dieser Grundtypen gibt es ein entsprechendes Ereignis.

Sie sollten vorsichtig sein, wenn Sie eine XML-Struktur innerhalb eines dieser Ereignisse ändern, da dies zu unerwarteten Ergebnissen führen kann. Wenn Sie z. B. ein Changing Ereignis erhalten und während der Verarbeitung des Ereignisses der Knoten aus der Struktur entfernt wird, erhalten Sie das Changed Ereignis möglicherweise nicht. Wenn ein Ereignis verarbeitet wird, ist es gültig, eine andere XML-Struktur als die zu ändern, die den Knoten enthält, der das Ereignis empfängt. Es ist sogar gültig, dieselbe Struktur zu ändern, vorausgesetzt, die Änderungen wirken sich nicht auf die spezifischen Knoten aus, auf denen das Ereignis ausgelöst wurde. Wenn Sie jedoch den Bereich der Struktur ändern, der den Knoten enthält, der das Ereignis empfängt, sind die empfangenen Ereignisse und die Auswirkungen auf die Struktur nicht definiert.

Gilt für:

Weitere Informationen