XObjectChange 열거형

정의

XObject에 대한 이벤트가 발생할 때 이벤트 형식을 지정합니다.Specifies the event type when an event is raised for an XObject.

public enum class XObjectChange
public enum XObjectChange
type XObjectChange = 
Public Enum XObjectChange
상속
XObjectChange

필드

Add 0

XObject에 추가되었거나 추가될 XContainer입니다.An XObject has been or will be added to an XContainer.

Name 2

이름이 변경되었거나 변경될 XObject입니다.An XObject has been or will be renamed.

Remove 1

XObject에서 제거되었거나 제거될 XContainer입니다.An XObject has been or will be removed from an XContainer.

Value 3

변경되었거나 변경될 XObject의 값입니다.The value of an XObject has been or will be changed. 또한 변경 (빈 태그가 시작/끝 태그 쌍 하거나 그 반대 방향 중 하나) 빈 요소의 serialization이이 이벤트를 발생 시킵니다.In addition, a change in the serialization of an empty element (either from an empty tag to start/end tag pair or vice versa) raises this event.

예제

다음 예제에서는 요소 트리에 추가 하 여 이벤트를 발생 시킵니다.The following example raises an event by adding an element to the tree.

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"));  

이 예제는 다음과 같은 출력을 생성합니다.This example produces the following output:

Changing event raised  
  Sender: System.Xml.Linq.XElement  
  Changing: Add  
Changed event raised  
  Sender: System.Xml.Linq.XElement  
  Changed: Add  

다음 예제에서는 트리에서 요소를 제거 하 여 이벤트를 발생 시킵니다.The following example raises an event by removing an element from the tree.

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();  

이 예제는 다음과 같은 출력을 생성합니다.This example produces the following output:

Changing event raised  
  Sender: System.Xml.Linq.XElement  
  Changing: Remove  
Changed event raised  
  Sender: System.Xml.Linq.XElement  
  Changed: Remove  

다음 예제에서는 요소의 이름을 변경 하 여 이벤트를 발생 시킵니다.The following example raises an event by changing the name of an element.

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";  

이 예제는 다음과 같은 출력을 생성합니다.This example produces the following output:

Changing event raised  
  Sender: System.Xml.Linq.XElement  
  Changing: Name  
Changed event raised  
  Sender: System.Xml.Linq.XElement  
  Changed: Name  

다음 예제에서는 특성의 값을 설정 하 여 이벤트를 발생 시킵니다.The following example raises an event by setting the value of an attribute.

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";  

이 예제는 다음과 같은 출력을 생성합니다.This example produces the following output:

Changing event raised  
  Sender: System.Xml.Linq.XAttribute  
  Changing: Value  
Changed event raised  
  Sender: System.Xml.Linq.XAttribute  
  Changed: Value  

설명

enumXObject에 대해 이벤트가 발생할 때 이벤트 유형을 지정 합니다.This enum specifies the event type when an event is raised for an XObject.

XML 트리를 수정 하는 모든 작업은 일련의 기본을 나눕니다.All operations that modify the XML tree break down to a series of primitives. 네 가지 기본 유형이 있습니다.There are four types of primitives. 기본 형식 (Add 및 Remove)의 두 컬렉션에 대해 수행 됩니다.Two of the primitives (Add and Remove) act on collections. (이름 및 값)의 두 인스턴스에서 수행 됩니다.Two of them (Name and Value) act on instances. 이러한 각 기본이 작업에 대 한 해당 이벤트가 있습니다.There is a corresponding event for each of these primitives.

예기치 않은 결과가 발생할 수 있습니다이 작업을 수행 하기 때문에 이러한 이벤트 중 하나에서 XML 트리를 수정 하는 경우 주의 해야 합니다.You should be careful when modifying an XML tree within one of these events, because doing this might lead to unexpected results. 예를 들어 Changing 이벤트를 수신 하 고 이벤트를 처리 하는 동안 트리에서 노드를 제거 하면 Changed 이벤트가 수신 되지 않을 수 있습니다.For example, if you receive a Changing event, and while the event is being processed you remove the node from the tree, you might not receive the Changed event. 이벤트가 처리 되는 경우에 이벤트를 수신 하는 노드를 포함 하는 것과 다른 XML 트리를 수정할 수 수정이 이벤트가 발생 한 특정 노드가 영향을 주지 않습니다 제공 같은 트리를 수정 하려면도 유효 합니다.When an event is being processed, it is valid to modify an XML tree other than the one that contains the node that is receiving the event; it is even valid to modify the same tree provided the modifications do not affect the specific nodes on which the event was raised. 그러나 이벤트를 수신 하는 노드가 포함 된 트리의 영역을 수정 하면 트리에 영향과 받은 이벤트를 정의 되지 않습니다.However, if you modify the area of the tree that contains the node receiving the event, the events that you receive and the impact to the tree are undefined.

적용 대상

추가 정보