XObjectChange Перечисление

Определение

Указывает тип события при вызове события для XObjectобъекта.

public enum class XObjectChange
public enum XObjectChange
type XObjectChange = 
Public Enum XObjectChange
Наследование
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, отличное от дерева, содержащего узел, получающий событие; Это даже допустимо для изменения того же дерева, если изменения не влияют на определенные узлы, на которые возникло событие. Однако если изменить область дерева, содержащей узел, получающий событие, события, полученные и влияние на дерево, не определены.

Применяется к

См. также раздел