XObjectChange Enumerazione

Definizione

Specifica il tipo di evento quando viene generato un evento per un oggetto XObject.

public enum class XObjectChange
public enum XObjectChange
type XObjectChange = 
Public Enum XObjectChange
Ereditarietà
XObjectChange

Campi

Add 0

Un XObject è stato o verrà aggiunto a un XContainer.

Name 2

Un XObject è stato o verrà rinominato.

Remove 1

Un XObject è stato o verrà rimosso da un XContainer.

Value 3

Il valore di un XObject è stato o verrà modificato. 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.

Esempio

Nell'esempio seguente viene generato un evento aggiungendo un elemento all'albero.

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

Nell'esempio viene prodotto l'output seguente:

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 rimuovendo un elemento dall'albero.

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

Nell'esempio viene prodotto l'output seguente:

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.

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

Nell'esempio viene prodotto l'output seguente:

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.

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

Nell'esempio viene prodotto l'output seguente:

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

Commenti

Questo enum specifica il tipo di evento quando viene generato un evento per un XObjectoggetto .

Tutte le operazioni che modificano l'albero XML si suddivideno in una serie di primitive. Esistono quattro tipi di primitive. Due delle primitive (Aggiungi e Rimuovi) agiscono sulle raccolte. Due di essi (Nome e Valore) agiscono sulle istanze. Esiste un evento corrispondente per ognuna di queste primitive.

È consigliabile prestare attenzione quando si modifica un albero XML all'interno di uno di questi eventi, perché questa operazione potrebbe causare risultati imprevisti. Ad esempio, se si riceve un Changing evento e durante l'elaborazione dell'evento si rimuove il nodo dall'albero, potrebbe non essere visualizzato l'evento Changed . Quando viene elaborato un evento, è valido modificare un albero XML diverso da quello che contiene il nodo che riceve l'evento; è anche valido modificare lo stesso albero, purché le modifiche non influiscano sui nodi specifici in cui è stato generato l'evento. Tuttavia, se si modifica l'area dell'albero che contiene il nodo che riceve l'evento, gli eventi ricevuti e l'impatto sull'albero non sono definiti.

Si applica a

Vedi anche