XObjectChange Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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.