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

Определение

Задает тип события, когда событие вызывается объектом XObject.Specifies the event type when an event is raised for an XObject.

public enum class XObjectChange
public enum XObjectChange
type XObjectChange = 
Public Enum XObjectChange
Наследование
XObjectChange

Поля

Add 0

XObject был или будет добавлен к XContainer.An XObject has been or will be added to an XContainer.

Name 2

XObject был или будет переименован.An XObject has been or will be renamed.

Remove 1

XObject был или будет удален из XContainer.An XObject has been or will be removed from an XContainer.

Value 3

Значение XObject было или будет изменено.The value of an XObject has been or will be changed. Дополнительно это событие вызывается сериализацией пустого элемента (или из пустого тега в пару тегов "начало/окончание" или наоборот).In addition, a change in the serialization of an empty element (either from an empty tag to start/end tag pair or vice versa) raises this event.

Примеры

В следующем примере событие создается путем добавления элемента в дерево.The following example raises an event by adding an element to the tree.

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"));  

В этом примере выводятся следующие данные:This example produces the following output:

Changing event raised  
  Sender: System.Xml.Linq.XElement  
  Changing: Add  
Changed event raised  
  Sender: System.Xml.Linq.XElement  
  Changed: Add  

В следующем примере событие создается путем удаления элемента из дерева.The following example raises an event by removing an element from the tree.

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();  

В этом примере выводятся следующие данные:This example produces the following output:

Changing event raised  
  Sender: System.Xml.Linq.XElement  
  Changing: Remove  
Changed event raised  
  Sender: System.Xml.Linq.XElement  
  Changed: Remove  

В следующем примере событие создается путем изменения имени элемента.The following example raises an event by changing the name of an element.

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";  

В этом примере выводятся следующие данные:This example produces the following output:

Changing event raised  
  Sender: System.Xml.Linq.XElement  
  Changing: Name  
Changed event raised  
  Sender: System.Xml.Linq.XElement  
  Changed: Name  

В следующем примере создается событие путем задания значения атрибута.The following example raises an event by setting the value of an attribute.

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";  

В этом примере выводятся следующие данные:This example produces the following output:

Changing event raised  
  Sender: System.Xml.Linq.XAttribute  
  Changing: Value  
Changed event raised  
  Sender: System.Xml.Linq.XAttribute  
  Changed: Value  

Комментарии

enumУказывает тип события при вызове события для XObject .This enum specifies the event type when an event is raised for an XObject.

Все операции, которые изменяют дерево XML, разбивается на ряд примитивов.All operations that modify the XML tree break down to a series of primitives. Существует четыре типа примитивов.There are four types of primitives. Два примитива (Добавление и удаление) работают с коллекциями.Two of the primitives (Add and Remove) act on collections. Два из них (имя и значение) действуют для экземпляров.Two of them (Name and Value) act on instances. Для каждого из этих примитивов существует соответствующее событие.There is a corresponding event for each of these primitives.

При изменении дерева XML в одном из этих событий следует соблюдать осторожность, поскольку это может привести к непредвиденным результатам.You should be careful when modifying an XML tree within one of these events, because doing this might lead to unexpected results. Например, если вы получаете Changing событие, а во время обработки события удаляется узел из дерева, событие может не быть получено Changed .For example, if you receive a Changing event, and while the event is being processed you remove the node from the tree, you might not receive the Changed event. При обработке события допускается изменение XML-дерева, отличного от того, который содержит узел, получающий событие; Это даже допустимо для изменения того же дерева, при условии, что изменения не влияют на конкретные узлы, на которых было вызвано событие.When an event is being processed, it is valid to modify an XML tree other than the one that contains the node that is receiving the event; it is even valid to modify the same tree provided the modifications do not affect the specific nodes on which the event was raised. Однако при изменении области дерева, содержащей узел, получающий событие, получаемые события и влияние на дерево не определяются.However, if you modify the area of the tree that contains the node receiving the event, the events that you receive and the impact to the tree are undefined.

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

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