XObjectChange Enumeração

Definição

Especifica o tipo de evento quando um evento é gerado para 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
Herança
XObjectChange

Campos

Add 0

Um XObject foi ou será adicionado a um XContainer.An XObject has been or will be added to an XContainer.

Name 2

Um XObject foi ou será renomeado.An XObject has been or will be renamed.

Remove 1

Um XObject foi ou será removido de um XContainer.An XObject has been or will be removed from an XContainer.

Value 3

O valor de um XObject foi ou será alterado.The value of an XObject has been or will be changed. Além disso, uma alteração na serialização de um elemento vazio (seja de uma marca vazia para um par de marcas de início/fim ou vice-versa) gera esse evento.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.

Exemplos

O exemplo a seguir gera um evento, adicionando um elemento à árvore.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"));  

Esse exemplo gera a saída a seguir: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  

O exemplo a seguir gera um evento removendo um elemento da árvore.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();  

Esse exemplo gera a saída a seguir: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  

O exemplo a seguir gera um evento alterando o nome de um elemento.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";  

Esse exemplo gera a saída a seguir: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  

O exemplo a seguir gera um evento definindo o valor de um atributo.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";  

Esse exemplo gera a saída a seguir: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  

Comentários

Isso enum especifica o tipo de evento quando um evento é gerado para um XObject .This enum specifies the event type when an event is raised for an XObject.

Todas as operações que modificam a divisão da árvore XML para uma série de primitivos.All operations that modify the XML tree break down to a series of primitives. Há quatro tipos de primitivos.There are four types of primitives. Dois dos primitivos (adicionar e remover) agem em coleções.Two of the primitives (Add and Remove) act on collections. Dois deles (nome e valor) agem em instâncias.Two of them (Name and Value) act on instances. Há um evento correspondente para cada um desses primitivos.There is a corresponding event for each of these primitives.

Você deve ter cuidado ao modificar uma árvore XML dentro de um desses eventos, pois isso pode levar a resultados inesperados.You should be careful when modifying an XML tree within one of these events, because doing this might lead to unexpected results. Por exemplo, se você receber um Changing evento e, enquanto o evento estiver sendo processado, remover o nó da árvore, talvez você não receba o Changed evento.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. Quando um evento está sendo processado, é válido modificar uma árvore XML diferente daquela que contém o nó que está recebendo o evento; é mesmo válido modificar a mesma árvore, desde que as modificações não afetem os nós específicos em que o evento foi gerado.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. No entanto, se você modificar a área da árvore que contém o nó que está recebendo o evento, os eventos recebidos e o impacto para a árvore serão indefinidos.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.

Aplica-se a