Sdílet prostřednictvím


XObjectChange Výčet

Definice

Určuje typ události při vyvolání události pro XObject.

public enum class XObjectChange
public enum XObjectChange
type XObjectChange = 
Public Enum XObjectChange
Dědičnost
XObjectChange

Pole

Add 0

Do XObject objektu XContainerbyl nebo bude přidán objekt .

Name 2

Byla XObject nebo bude přejmenována.

Remove 1

Objekt XObject byl nebo bude odebrán z objektu XContainer.

Value 3

Hodnota byla XObject nebo bude změněna. Kromě toho změna serializace prázdného elementu (buď z prázdné značky na počáteční a koncový pár značek nebo naopak) vyvolá tuto událost.

Příklady

Následující příklad vyvolá událost přidáním elementu do stromu.

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

Tento příklad vytvoří následující výstup:

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

Následující příklad vyvolá událost odebráním elementu ze stromu.

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

Tento příklad vytvoří následující výstup:

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

Následující příklad vyvolá událost změnou názvu elementu.

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

Tento příklad vytvoří následující výstup:

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

Následující příklad vyvolá událost nastavením hodnoty atributu.

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

Tento příklad vytvoří následující výstup:

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

Poznámky

Určuje enum typ události při vyvolání události pro XObject.

Všechny operace, které upravují strom XML, se rozdělí na řadu primitiv. Existují čtyři typy primitiv. Dvě z primitiv (Přidat a Odebrat) fungují na kolekcích. Dvě z nich (Název a Hodnota) fungují na instancích. Pro každou z těchto primitiv existuje odpovídající událost.

Při úpravách stromu XML v rámci jedné z těchto událostí byste měli být opatrní, protože to může vést k neočekávaným výsledkům. Pokud například obdržíte Changing událost a během zpracování události odeberete uzel ze stromu, je možné, že událost neobdržíte Changed . Při zpracování události je platné změnit xml strom jiný než ten, který obsahuje uzel, který přijímá událost; je dokonce platné upravit stejný strom za předpokladu, že úpravy nemají vliv na konkrétní uzly, na kterých byla událost vyvolána. Pokud však upravíte oblast stromu, která obsahuje uzel přijímající událost, jsou události, které obdržíte, a dopad na strom nedefinovány.

Platí pro

Viz také