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 objekt .XObject
public enum class XObjectChange
public enum XObjectChange
type XObjectChange =
Public Enum XObjectChange
- Dědičnost
Pole
| Name | Hodnota | Description |
|---|---|---|
| Add | 0 | Byla XObject nebo bude přidána do objektu XContainer. |
| Remove | 1 | Byl XObject nebo bude odebrán z objektu XContainer. |
| Name | 2 | Byl XObject nebo bude přejmenován. |
| Value | 3 | Hodnota XObject byla nebo bude změněna. Kromě toho změna serializace prázdného elementu (buď z prázdné značky na počáteční/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 XObjectobjekt .
Všechny operace, které upravují strom XML, se rozdělí na řadu primitiv. Existují čtyři typy primitiv. Dva z primitiv (Přidat a odebrat) fungují s kolekcemi. Dva z nich (Název a Hodnota) fungují s instancemi. Pro každou z těchto primitiv existuje odpovídající událost.
Při úpravě 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, nemusí se událost zobrazit Changed . Při zpracování události je platná změna stromu XML jiného než ten, který obsahuje uzel, který přijímá událost; je dokonce platné upravit stejný strom za předpokladu, že změny nemají vliv na konkrétní uzly, na kterých byla událost vyvolána. Pokud ale upravíte oblast stromu, která obsahuje uzel přijímající událost, události, které obdržíte, a dopad na strom není definován.