XObjectChange Enumeração
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Especifica o tipo de evento quando um evento é gerado para um XObject.
public enum class XObjectChange
public enum XObjectChange
type XObjectChange =
Public Enum XObjectChange
- Herança
Campos
| Name | Valor | Description |
|---|---|---|
| Add | 0 | Um XObject foi ou será adicionado a um XContainer. |
| Remove | 1 | Um XObject foi ou será removido de um XContainer. |
| Name | 2 | An XObject foi ou será renomeado. |
| Value | 3 | O valor de um XObject foi ou será alterado. Além disso, uma alteração na serialização de um elemento vazio (seja de uma etiqueta vazia para o par de etiquetas início/fim ou vice-versa) gera este evento. |
Exemplos
O exemplo seguinte gera um evento adicionando um elemento à árvore.
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"));
Este exemplo produz a seguinte saída:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Add
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Add
O exemplo seguinte gera um evento ao remover um elemento da árvore.
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();
Este exemplo produz a seguinte saída:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Remove
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Remove
O exemplo seguinte levanta um evento ao alterar o nome de um 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";
Este exemplo produz a seguinte saída:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Name
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Name
O exemplo seguinte levanta um evento ao definir o valor de um atributo.
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";
Este exemplo produz a seguinte saída:
Changing event raised
Sender: System.Xml.Linq.XAttribute
Changing: Value
Changed event raised
Sender: System.Xml.Linq.XAttribute
Changed: Value
Observações
Isto enum especifica o tipo de evento quando um evento é levantado para um XObject.
Todas as operações que modificam a árvore XML decompõem-se numa série de primitivas. Existem quatro tipos de primitivos. Duas das primitivas (Adicionar e Remover) atuam sobre coleções. Dois deles (Nome e Valor) atuam em instâncias. Existe um evento correspondente para cada uma destas primitivas.
Deve ter cuidado ao modificar uma árvore XML dentro de um destes eventos, pois fazer isso pode levar a resultados inesperados. Por exemplo, se receber um Changing evento e, enquanto o evento está a ser processado, remove o nó da árvore, pode não receber o Changed evento. Quando um evento está a ser processado, é válido modificar uma árvore XML diferente daquela que contém o nó que está a receber o evento; É até válido modificar a mesma árvore, desde que as modificações não afetem os nós específicos onde o evento foi gerado. No entanto, se modificar a área da árvore que contém o nó que recebe o evento, os eventos que recebe e o impacto na árvore ficam indefinidos.