XObjectChange 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当 XObject 发生事件时指定事件类型。
public enum class XObjectChange
public enum XObjectChange
type XObjectChange =
Public Enum XObjectChange
- 继承
字段
Add | 0 | XObject 已经或将要添加到 XContainer。 |
Name | 2 | XObject 已经或将要重命名。 |
Remove | 1 | XObject 已经或将要从 XContainer 中移除。 |
Value | 3 | XObject 的值已经或将要更改。 此外,在序列化空元素过程中进行的更改(从空标记更改为开始/结束标记对,反之亦然)会引发此事件。 |
示例
以下示例通过将 元素添加到树中来引发 事件。
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"));
该示例产生下面的输出:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Add
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Add
下面的示例通过从树中删除 元素来引发 事件。
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();
该示例产生下面的输出:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Remove
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Remove
下面的示例通过更改元素的名称引发 事件。
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";
该示例产生下面的输出:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Name
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Name
以下示例通过设置 属性的值引发 事件。
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";
该示例产生下面的输出:
Changing event raised
Sender: System.Xml.Linq.XAttribute
Changing: Value
Changed event raised
Sender: System.Xml.Linq.XAttribute
Changed: Value
注解
这 enum
指定为 XObject引发事件时的事件类型。
修改 XML 树的所有操作都分解为一系列基元。 有四种类型的基元。 (添加和删除) 对集合执行操作的两个基元。 其中两个 (名称和值) 作用实例。 其中每个基元都有相应的事件。
修改其中一个事件中的 XML 树时应小心,因为这样做可能会导致意外结果。 例如,如果收到事件 Changing ,并且正在处理该事件时从树中删除节点,则可能不会收到该 Changed 事件。 处理事件时,修改包含接收事件的节点的 XML 树是有效的;修改同一树甚至有效,前提是修改不会影响引发事件的特定节点。 但是,如果修改包含接收事件的节点的树区域,则收到的事件和对树的影响是不确定的。