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 樹狀結構的所有作業都會細分成一系列基本類型。 基本類型有四種。 兩個基本類型 (新增和移除) 對集合採取行動。 其中兩個 (Name 和 Value) 實例上作用。 每個基本類型都有對應的事件。
在上述其中一個事件內修改 XML 樹狀結構時,您應該小心,因為這麼做可能會導致非預期的結果。 例如,如果您收到 Changing 事件,而且正在處理事件時,您會從樹狀結構中移除節點,則可能不會收到 Changed 事件。 正在處理事件時,修改包含接收事件的節點以外的 XML 樹狀結構是有效的;即使修改相同的樹狀結構也有效,前提是修改不會影響引發事件的特定節點。 不過,如果您修改包含接收事件的節點的樹狀結構區域,您收到的事件和對樹狀結構的影響是未定義的。