XObjectChange Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Задает тип события, когда событие вызывается объектом XObject.
public enum class XObjectChange
public enum XObjectChange
type XObjectChange =
Public Enum XObjectChange
- Наследование
Поля
Add | 0 | XObject был или будет добавлен к XContainer. |
Name | 2 | XObject был или будет переименован. |
Remove | 1 | XObject был или будет удален из XContainer. |
Value | 3 | Значение XObject было или будет изменено. Дополнительно это событие вызывается сериализацией пустого элемента (или из пустого тега в пару тегов "начало/окончание" или наоборот). |
Примеры
В следующем примере создается событие путем добавления элемента в дерево.
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"));
В этом примере выводятся следующие данные:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Add
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Add
В следующем примере создается событие путем удаления элемента из дерева.
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();
В этом примере выводятся следующие данные:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Remove
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Remove
В следующем примере создается событие путем изменения имени элемента.
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";
В этом примере выводятся следующие данные:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Name
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Name
В следующем примере создается событие путем задания значения атрибута.
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";
В этом примере выводятся следующие данные:
Changing event raised
Sender: System.Xml.Linq.XAttribute
Changing: Value
Changed event raised
Sender: System.Xml.Linq.XAttribute
Changed: Value
Комментарии
Указывает enum
тип события при возникновении события для XObject.
Все операции, изменяющие XML-дерево, разбиваются на ряд примитивов. Существует четыре типа примитивов. Два примитива (Add и Remove) действуют на коллекции. Два из них (имя и значение) действуют на экземплярах. Для каждого из этих примитивов имеется соответствующее событие.
При изменении XML-дерева в рамках одного из этих событий следует соблюдать осторожность, так как это может привести к непредвиденным результатам. Например, если вы получаете Changing событие и во время обработки события удаляете узел из дерева, возможно, оно не будет получено Changed . При обработке события допустимо изменять XML-дерево, отличное от того, которое содержит узел, получающий событие; Изменение того же дерева допустимо даже при условии, что изменения не влияют на конкретные узлы, на которых возникло событие. Однако при изменении области дерева, содержащего узел, принимающий событие, получаемые события и влияние на дерево будут неопределенными.