XObjectChange Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Especifica el tipo de evento cuando se genera éste para un XObject.
public enum class XObjectChange
public enum XObjectChange
type XObjectChange =
Public Enum XObjectChange
- Herencia
Campos
| Nombre | Valor | Description |
|---|---|---|
| Add | 0 | Se XObject ha agregado o se agregará a .XContainer |
| Remove | 1 | Se XObject ha quitado o se ha quitado de .XContainer |
| Name | 2 | XObject Se ha cambiado el nombre de o . |
| Value | 3 | El valor de un XObject objeto ha sido o se cambiará. Además, un cambio en la serialización de un elemento vacío (ya sea desde una etiqueta vacía hasta el par de etiquetas de inicio/fin o viceversa) genera este evento. |
Ejemplos
En el ejemplo siguiente se genera un evento agregando un elemento al árbol.
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 ejemplo produce el siguiente resultado:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Add
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Add
En el ejemplo siguiente se genera un evento quitando un elemento del árbol.
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 ejemplo produce el siguiente resultado:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Remove
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Remove
En el ejemplo siguiente se genera un evento cambiando el nombre de 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";
Este ejemplo produce el siguiente resultado:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Name
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Name
En el ejemplo siguiente se genera un evento estableciendo el valor de un 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 ejemplo produce el siguiente resultado:
Changing event raised
Sender: System.Xml.Linq.XAttribute
Changing: Value
Changed event raised
Sender: System.Xml.Linq.XAttribute
Changed: Value
Comentarios
Especifica enum el tipo de evento cuando se genera un evento para un XObject.
Todas las operaciones que modifican el árbol XML desglosan en una serie de primitivos. Hay cuatro tipos de primitivos. Dos de los primitivos (Agregar y quitar) actúan en colecciones. Dos de ellos (Nombre y Valor) actúan en instancias. Hay un evento correspondiente para cada uno de estos primitivos.
Debe tener cuidado al modificar un árbol XML dentro de uno de estos eventos, ya que hacerlo podría dar lugar a resultados inesperados. Por ejemplo, si recibe un Changing evento y mientras el evento se está procesando, quite el nodo del árbol, es posible que no reciba el Changed evento. Cuando se procesa un evento, es válido modificar un árbol XML distinto del que contiene el nodo que recibe el evento; incluso es válido modificar el mismo árbol siempre que las modificaciones no afecten a los nodos específicos en los que se generó el evento. Sin embargo, si modifica el área del árbol que contiene el nodo que recibe el evento, los eventos que recibe y el impacto en el árbol no están definidos.