다음을 통해 공유


XObjectChange 열거형

정의

XObject에 대한 이벤트가 발생할 때 이벤트 형식을 지정합니다.

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

필드

Add 0

XObject에 추가되었거나 추가될 XContainer입니다.

Name 2

이름이 변경되었거나 변경될 XObject입니다.

Remove 1

XObject에서 제거되었거나 제거될 XContainer입니다.

Value 3

변경되었거나 변경될 XObject의 값입니다. 또한 빈 요소의 serialization이 변경된 경우(빈 태그가 시작/끝 태그 쌍으로 변경되었거나 그 반대로 변경된 경우) 이 이벤트가 발생합니다.

예제

다음 예제에서는 트리에 요소를 추가하여 이벤트를 발생합니다.

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 트리를 수정하는 것이 유효합니다. 수정이 이벤트가 발생한 특정 노드에 영향을 미치지 않는 경우 동일한 트리를 수정하는 것도 유효합니다. 그러나 이벤트를 수신하는 노드가 포함된 트리 영역을 수정하는 경우 수신하는 이벤트와 트리에 미치는 영향은 정의되지 않습니다.

적용 대상

추가 정보