XObjectChange Enum

Definitie

Hiermee geeft u het gebeurtenistype op wanneer een gebeurtenis wordt gegenereerd voor een XObject.

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

Velden

Name Waarde Description
Add 0

Een XObject is of wordt toegevoegd aan een XContainer.

Remove 1

Een XObject is of wordt verwijderd uit een XContainer.

Name 2

Een XObject naam is of wordt gewijzigd.

Value 3

De waarde van een XObject is of wordt gewijzigd. Bovendien wordt deze gebeurtenis gegenereerd door een wijziging in de serialisatie van een leeg element (van een lege tag naar het begin-/eindtagpaar of omgekeerd).

Voorbeelden

In het volgende voorbeeld wordt een gebeurtenis gegenereerd door een element toe te voegen aan de structuur.

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"));  

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

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

In het volgende voorbeeld wordt een gebeurtenis gegenereerd door een element uit de structuur te verwijderen.

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();  

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

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

In het volgende voorbeeld wordt een gebeurtenis gegenereerd door de naam van een element te wijzigen.

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";  

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

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

In het volgende voorbeeld wordt een gebeurtenis gegenereerd door de waarde van een kenmerk in te stellen.

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";  

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

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

Opmerkingen

Hiermee enum geeft u het gebeurtenistype op wanneer een gebeurtenis wordt gegenereerd voor een XObject.

Alle bewerkingen die de XML-structuur wijzigen, worden opgesplitst in een reeks primitieven. Er zijn vier typen primitieven. Twee van de primitieven (Toevoegen en Verwijderen) reageren op verzamelingen. Er worden twee exemplaren (naam en waarde) uitgevoerd. Er is een overeenkomstige gebeurtenis voor elk van deze primitieven.

U moet voorzichtig zijn bij het wijzigen van een XML-structuur binnen een van deze gebeurtenissen, omdat dit kan leiden tot onverwachte resultaten. Als u bijvoorbeeld een Changing gebeurtenis ontvangt en terwijl de gebeurtenis wordt verwerkt, verwijdert u het knooppunt uit de structuur, ontvangt u de Changed gebeurtenis mogelijk niet. Wanneer een gebeurtenis wordt verwerkt, is het geldig om een andere XML-boomstructuur te wijzigen dan de structuur die het knooppunt bevat dat de gebeurtenis ontvangt; het is zelfs geldig om dezelfde structuur te wijzigen, mits de wijzigingen geen invloed hebben op de specifieke knooppunten waarop de gebeurtenis is gegenereerd. Als u echter het gebied van de structuur wijzigt dat het knooppunt bevat dat de gebeurtenis ontvangt, zijn de gebeurtenissen die u ontvangt en de impact op de structuur niet gedefinieerd.

Van toepassing op

Zie ook