Поделиться через


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

Определение

Задает тип события, когда событие вызывается объектом XObject.

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

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

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