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