XObjectChange 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当 XObject 发生事件时指定事件类型。
public enum class XObjectChange
public enum XObjectChange
type XObjectChange =
Public Enum XObjectChange
- 继承
字段
| 名称 | 值 | 说明 |
|---|---|---|
| Add | 0 | 已将一个 XObject 或将被添加到一个 XContainer。 |
| Remove | 1 | 已从 |
| Name | 2 | XObject已或将被重命名。 |
| 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 树是有效的;即使修改同一树也有效,前提是修改不会影响引发事件的特定节点。 但是,如果修改包含接收事件的节点的树区域,则收到的事件和对树的影响是未定义的。