Leggere in inglese

Condividi tramite


XObjectChange Enumerazione

Definizione

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

public enum XObjectChange
Ereditarietà
XObjectChange

Campi

Nome Valore Descrizione
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

Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Vedi anche