XObjectChange XObjectChange XObjectChange XObjectChange Enum

Definizione

Specifica il tipo di evento quando viene generato un evento per un oggetto 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
Ereditarietà
XObjectChangeXObjectChangeXObjectChangeXObjectChange

Campi

Add Add Add Add 0

Un XObject è stato o verrà aggiunto a un XContainer.An XObject has been or will be added to an XContainer.

Name Name Name Name 2

Un XObject è stato o verrà rinominato.An XObject has been or will be renamed.

Remove Remove Remove Remove 1

Un XObject è stato o verrà rimosso da un XContainer.An XObject has been or will be removed from an XContainer.

Value Value Value Value 3

Il valore di un XObject è stato o verrà modificato.The value of an XObject has been or will be changed. Inoltre, una modifica nella serializzazione di un elemento vuoto (da un tag vuoto in una coppia di tag inizio/chiusura di fine o viceversa) genera questo 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.

Esempi

Nell'esempio seguente viene generato un evento aggiungendo un elemento all'albero.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"));  

Questo esempio produce il seguente output: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  

Nell'esempio seguente viene generato un evento mediante la rimozione di un elemento dall'albero.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();  

Questo esempio produce il seguente output: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  

Nell'esempio seguente viene generato un evento modificando il nome di un 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";  

Questo esempio produce il seguente output: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  

Nell'esempio seguente viene generato un evento impostando il valore di un attributo.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";  

Questo esempio produce il seguente output: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  

Commenti

Specifica il tipo di evento quando viene generato un evento per un XObjectoggetto. enumThis enum specifies the event type when an event is raised for an XObject.

Tutte le operazioni che modificano l'albero XML si suddividono in una serie di primitive.All operations that modify the XML tree break down to a series of primitives. Sono disponibili quattro tipi di primitive.There are four types of primitives. Due delle primitive (Aggiungi e Rimuovi) agiscono sulle raccolte.Two of the primitives (Add and Remove) act on collections. Due di essi (nome e valore) agiscono sulle istanze.Two of them (Name and Value) act on instances. Esiste un evento corrispondente per ognuna di queste primitive.There is a corresponding event for each of these primitives.

Quando si modifica un albero XML all'interno di uno di questi eventi, è necessario prestare attenzione perché questa operazione potrebbe causare risultati imprevisti.You should be careful when modifying an XML tree within one of these events, because doing this might lead to unexpected results. Se, ad esempio, si riceve Changing un evento e durante l'elaborazione dell'evento si rimuove il nodo dall'albero, è possibile che non si riceva l' 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 viene elaborato un evento, è possibile modificare un albero XML diverso da quello che contiene il nodo che riceve l'evento; è anche possibile modificare la stessa struttura ad albero purché le modifiche non influiscano sui nodi specifici in cui è stato generato l'evento.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. Tuttavia, se si modifica l'area dell'albero che contiene il nodo che riceve l'evento, gli eventi ricevuti e l'effetto sull'albero sono indefiniti.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.

Si applica a

Vedi anche