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